2017-05-02 3 views
0

Unterhalb der Abfrage ist, wo ich total auf ReadyDate wollen, bedeutet invDate alle Daten haben gleiche readydate und invdate dann insgesamt Summe aller Gesamt zwischen diesen beiden TagenGruppe funktioniert nicht in meiner Anfrage

READYDATE Total  INVDATE  FIXED TWO_MAN THREE_MAN 
2017-01-30 0.00  2017-02-12 NULL 1  0 
2017-01-30 12102.20 2017-02-12 NULL 1  0 
2017-01-30 1950.30 2017-02-12 NULL 0  1 
2017-01-30 0.00  2017-03-26 NULL 1  0 
2017-01-31 0.00  2017-02-12 NULL 1  0 
2017-01-31 10451.90 2017-02-12 NULL 1  0 
2017-01-31 1300.20 2017-02-12 NULL 0  1 
2017-02-01 10451.90 2017-02-12 NULL 1  0 
2017-02-01 1950.30 2017-02-12 NULL 0  1 
2017-02-02 12652.30 2017-02-12 NULL 1  0 

das Richtige wird

READYDATE Total  INVDATE  FIXED TWO_MAN THREE_MAN 
2017-01-30 14052.00 2017-02-12  NULL  1  0 

Da die Gesamt readydate und invdate 14.052,50 wird

Meine Anfrage unter

ist
SELECT READYDATE, SUM(TOTAL) AS Total, INVDATE, 
case when TOTAL='1495.38' then TOTAL else NULL END AS FIXED, 
case when TOTAL<600 then '1' else '0' END AS TWO_MAN, 
case when TOTAL>=600 then '1' else '0' END AS THREE_MAN 
FROM orde_ WHERE CLIENTNUM='WAY' AND INVDATE>='20170101' 
GROUP BY READYDATE,INVDATE,TOTAL 
ORDER BY READYDATE 

können Sie mir bitte sagen, was ich falsch mache

Antwort

0

Versuchen Sie, diese

DECLARE @tbl TABLE(
READYDATE DATE 
,Total  MONEY 
,INVDATE DATE 
) 

INSERT INTO @tbl 
     (READYDATE 
     ,Total 
     ,INVDATE 
     ) 
VALUES 
('2017-01-30',0.00, '2017-02-12') 
,('2017-01-30',12102.20, '2017-02-12') 
,('2017-01-30',1950.30, '2017-02-12') 
,('2017-01-30',0.00, '2017-03-26') 
,('2017-01-31',0.00, '2017-02-12') 
,('2017-01-31',10451.90, '2017-02-12') 
,('2017-01-31',1300.20, '2017-02-12') 
,('2017-02-01',10451.90, '2017-02-12') 
,('2017-02-01',1950.30, '2017-02-12') 
,('2017-02-02',12652.30, '2017-02-12') 

;WITH cteX 
AS 
(
SELECT 
    T.READYDATE 
    ,T.INVDATE 
    ,SUM(T.Total) 'Total' 
FROM @tbl T 
GROUP BY 
    T.READYDATE 
    ,T.INVDATE 
) 
SELECT 
    X.READYDATE 
    ,X.Total 
    ,X.INVDATE 
    ,case when TOTAL='1495.38' then TOTAL else NULL END AS FIXED 
    ,case when TOTAL<600 then '1' else '0' END AS TWO_MAN 
    ,case when TOTAL>=600 then '1' else '0' END AS THREE_MAN 
FROM cteX X 
ORDER BY 
    X.READYDATE 
Verwandte Themen