2016-06-29 18 views
-2

ich die folgende Abfrage habe:Gruppierung, wenn Spalte NULL enthält

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

, dass die folgenden Daten zurück:

enter image description here

Wie kann ich dann in das unten Ergebnis mache das?

enter image description here

verwende ich SSMS 2014

+0

leides Bild korrekte Ergebnisse veröffentlichte – PIPRON79

+2

WHERE PosDateEntered WIRD NICHT NULL' – Bugs

+1

Nicht ganz sicher, was Sie „unten Ergebnis“ ist. Sieht so aus, als hätten Sie alle Werte aus der zweiten Zeile in Ihren tatsächlichen Ergebnissen außer RVtransactionAmount, das aus der ersten Zeile zu stammen scheint. – CodeJockey

Antwort

0

Ich bin nicht ganz sicher, aber ich glaube, Sie ISNULL und nicht benötigen. Man könnte dies versuchen: VoucherId = '2000702' AND PosDateEntered!= NULL

Wenn Sie mehr diese Hilfe Benötigen Sie könnte: SQL - don't display row when two criteria are met

+0

Wow, wie habe ich das gedacht. Ja, du brauchst "IS NOT NULL" anstelle von "! = NULL" – Alex

+0

, aber das gibt mir dann ein Ergebnis mit RVtransactionAmount -5, das ich noch brauche – PIPRON79

+0

Du wirst eine Art Join machen müssen, aber wahrscheinlich musst du einen machen neue Tabelle dafür. Schaut nach links, volle Joins. – Alex

0

Hier ist meine Lösung.

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 
Verwandte Themen