2016-06-29 7 views
-2

У меня есть ниже запрос:группировка, когда столбец содержит NULL

SELECT VoucherId, 
     PosDateEntered, 
     SUM(VoucherFaceValue) AS ValueIssued, 
     SUM(AmountUsed) AS ValueReedeemed, 
     RVtransactionAmount  
FROM [dbo].[LoyaltyVoucherTransactionDetails] 
WHERE VoucherId = '2000702' 
GROUP BY PosDateEntered, VoucherId, RVtransactionAmount 

Это возвращает ниже данные:

enter image description here

Как я могу затем сделать это в результат ниже?

enter image description here

Я использую SSMS 2014

+0

извините правильно результаты пупков Фетиш – PIPRON79

+2

'ГДЕ PosDateEntered НЕ NULL' – Bugs

+1

Не совсем уверен, что вы«ниже результата»есть. Похоже, что у вас есть все значения из второй строки в ваших фактических результатах, кроме RVtransactionAmount, которая, кажется, относится к первой строке. – CodeJockey

ответ

0

Я не слишком уверен, но я думаю, что вы будете нуждаться в ISNULL и NOT. Вы можете попробовать это: VoucherId = '2000702' AND PosDateEntered!= NULL

Если вы больше нужна помощь, это может помочь: SQL - don't display row when two criteria are met

+0

Ничего себе, как я так думаю. Да, вам нужно «НЕ НУЛЛ» вместо «! = NULL» – Alex

+0

, но тогда это дает мне результат с RVtransactionAmount -5, который мне по-прежнему нужен – PIPRON79

+0

Вам нужно будет сделать какое-то соединение, но, возможно, вам придется сделать новая таблица для этого. Взгляните вверх на полные соединения. – Alex

0

Вот мое решение.

create table test 
(
    voucherid int, 
    posdateentered datetime, 
    valueissued int, 
    valueredeemed int, 
    rvtransactionamount decimal(9,3) 
) 

insert into test values (2000702, null, 5, 0, -5.00) 
insert into test values (2000702, '4/2/2016', 5, 0, 5.00) 

select distinct t1.voucherid, t2.posdateentered, 
    t1.valueredeemed, t1.rvtransactionamount 
from test t1 
left join test t2 on t1.voucherid = t2.voucherid 
where t2.posdateentered is not null