none
Присвоение значения RRS feed

  • Вопрос

  • Здравствуйте!

    Есть следующий код:

    SELECT		CASE WHEN([PROVEA RUSSIA$Customer].[SPP Code]='' or [PROVEA RUSSIA$Customer].[SPP Code] is null) THEN 'OTHER' ELSE [PROVEA RUSSIA$Customer].[SPP Code] END AS SPP,
    				NULL as GrossSalesExclVAT,
    				NULL as Discount,
    				NULL as VD,
    				NULL as ReturnValueExclVAT,
    				NULL as OB,
    				NULL as Recruits,
    				NULL as Terminated,
    				NULL as Active,
    				NULL as Orders,
    				NULL as NoOf4,
    				NULL as NoOf5,
    				NULL as NoOf6,
    				NULL as NoOf7,
    				NULL as NoOf8,
    				NULL as NoOf9,
    				NULL as NoOf10,
    				NULL as NoOf11,
    				NULL as NoOf12,
    				NULL as NoOf13,
    				COUNT([Bonus Header].[Consultant No_]) as NoOf14,
    				NULL as TotalBonus,
    				NULL as AR_OB,
    				NULL as GrossSalesInclVAT,
    				NULL as FeesInclVAT,
    				NULL as ReturnValueInclVAT,
    				NULL as Payments,
    				NULL as BadDebt,
    				NULL as Corrections,
    				NULL as AR_CB
    
    	FROM [Bonus Header] (NOLOCK) INNER JOIN [PROVEA RUSSIA$Customer] (NOLOCK) ON [Bonus Header].[Consultant No_]=[PROVEA RUSSIA$Customer].[No_]
    	WHERE	[Bonus Header].[Period Bonus Calculation]=YEAR(@BeginDate)*100+MONTH(@BeginDate)
    		AND [Bonus Header].[Rank End of Period]='14-NATPR'
    	GROUP BY [PROVEA RUSSIA$Customer].[SPP Code]

    В случае отсутствия заданных элементов, на выходе получаем пустое поле. Пожалуйста, подскажите, каким образом можно сделать так, чтобы вместо пустого поля, выходило значение "0".

    14 июня 2012 г. 15:07

Ответы

  • Значит у вас проблема не в этом поле, IsNull от Count вернет либо 0, либо число. Попробуйте упростить запрос и найти где ошибка.


    Для связи [mail]

    • Помечено в качестве ответа Navruz3 28 июня 2012 г. 11:21
    27 июня 2012 г. 12:09

Все ответы

  • В случае отсутствия заданных элементов, на выходе получаем пустое поле. Пожалуйста, подскажите, каким образом можно сделать так, чтобы вместо пустого поля, выходило значение "0".

    Про какое поле разговор? Или вы про пустой рекордсет?

    http://www.t-sql.ru

    15 июня 2012 г. 0:51
    Модератор
  • Это касается значения NoOf14.

    Нужно, если оно пустое, чтобы ему присваивался 0.

    15 июня 2012 г. 7:47
  • Нужно, если оно пустое, чтобы ему присваивался 0.


    isnull()


    http://www.t-sql.ru

    15 июня 2012 г. 9:54
    Модератор
  • Не могли бы Вы показать это непосредственно в коде?
    15 июня 2012 г. 10:08
  • В случае отсутствия заданных элементов, на выходе получаем пустое поле. Пожалуйста, подскажите, каким образом можно сделать так, чтобы вместо пустого поля, выходило значение "0".

    Это касается значения NoOf14.

      А как так в NoOf14 может получаться NULL, если оно вычисляется через COUNT?




    • Изменено A.G.Sedov 18 июня 2012 г. 8:30
    18 июня 2012 г. 8:20
  • Оно может получиться ввиду отсутствия элементов для просчета. Во всяком случае, система возвращает именно пустое поле.

    Так как прописать в коде, что если возвращается пустое поле, то необходимо присвоить ему значение 0?

    18 июня 2012 г. 9:24
  • Как нибудь вот так:

    SELECT     ISNULL(uf.request, - 1) AS UID,
    где в моем случае uf.request значение которое может принимать значение null. В этом случае будет -1.
    18 июня 2012 г. 9:47
    Отвечающий
  • SELECT CASE WHEN([PROVEA RUSSIA$Customer].[SPP Code]='' or [PROVEA RUSSIA$Customer].[SPP Code] is null) THEN 'OTHER' ELSE [PROVEA RUSSIA$Customer].[SPP Code] END AS SPP,

    NULL as GrossSalesExclVAT, NULL as Discount, NULL as VD, NULL as ReturnValueExclVAT, NULL as OB, NULL as Recruits, NULL as Terminated, NULL as Active, NULL as Orders, NULL as NoOf4, NULL as NoOf5, NULL as NoOf6, NULL as NoOf7, NULL as NoOf8, NULL as NoOf9, NULL as NoOf10, NULL as NoOf11, NULL as NoOf12, NULL as NoOf13, COUNT([Bonus Header].[Consultant No_]) as NoOf14, NULL as TotalBonus, NULL as AR_OB, NULL as GrossSalesInclVAT, NULL as FeesInclVAT, NULL as ReturnValueInclVAT, NULL as Payments, NULL as BadDebt, NULL as Corrections, NULL as AR_CB FROM [Bonus Header] (NOLOCK) INNER JOIN [PROVEA RUSSIA$Customer] (NOLOCK) ON [Bonus Header].[Consultant No_]=[PROVEA RUSSIA$Customer].[No_] WHERE [Bonus Header].[Period Bonus Calculation]=YEAR(@BeginDate)*100+MONTH(@BeginDate) AND [Bonus Header].[Rank End of Period]='14-NATPR' GROUP BY [PROVEA RUSSIA$Customer].[SPP Code]

    Алексей, покажите пожалуйста это в коде данного запроса, если Вас не затруднит.



    • Изменено Navruz3 18 июня 2012 г. 10:00
    18 июня 2012 г. 9:59
  • Вот так наверно:

    IsNull(COUNT([Bonus Header].[Consultant No_]), 0) as NoOf14,
    18 июня 2012 г. 10:12
    Отвечающий
  • Не работает :(

    Все равно возвращает пустое поле...


    18 июня 2012 г. 10:52
  • IsNull(COUNT([Bonus Header].[Consultant No_]), 0) as NoOf14

    Я не очень то смысл понимаю подставлять тут isnull.

    У вас во from объединение по эквивалентности (inner join), а значит при значении null в [Bonus Header].[Consultant No_] у вас выборка по любому пустая.  COUNT при пустой выборке возвращает 0 (только что проверил, чтоб не сомневаться). 

    Так что скорее всего NULL в результате - это не NoOf14

    ---------------

    Можно увидеть ПринтСкрин результата запроса выполненного в MS SQL Managment  Studio?


    18 июня 2012 г. 11:40
  • Тогда как сделать, чтобы возвращался 0 вместо пустого поля?


    18 июня 2012 г. 11:55
  • Вам нужно выяснить какое именно поле возвращает null, как сказал A.G.Sedov выше, COUNT вернет либо кол-во записей, либо 0, если будет пустой результат внутри COUNT, и поэтому null возвращает не NoOf14. Попробуйте сократить запрос или еще раз перепроверить поле, которое возвращает NULL.

    Также если возможно выполните просьбу  A.G.Sedov.


    Для связи [mail]

    20 июня 2012 г. 11:29
  • Простите, но я не совсем Вас понял.

    Мне бы очень помогло, если бы Вы просто написали бы функцию проверки.

    Типа этого: ЕСЛИ в ячейка А1 ничего не содержится или в ней находится NULL, то присвоить ей значение 0

    20 июня 2012 г. 15:02
  • Так это и делает функция IsNull(ячейка, значение по умолчанию). Оберните все нужные ячейки в нее.


    Для связи [mail]

    20 июня 2012 г. 16:16
  • Но этот код не работает. Всё равно возвращает пустое поле. А мне нужен 0 :)

    IsNull(COUNT([Bonus Header].[Consultant No_]), 0) as NoOf14


    20 июня 2012 г. 16:39
  • Значит у вас проблема не в этом поле, IsNull от Count вернет либо 0, либо число. Попробуйте упростить запрос и найти где ошибка.


    Для связи [mail]

    • Помечено в качестве ответа Navruz3 28 июня 2012 г. 11:21
    27 июня 2012 г. 12:09