2017-05-02 48 views
0

下面是我想在ReadyDate總查詢,invDate意味着所有的數據都相同readydate和invdate那麼一共是這兩天之間的所有總的總和GROUP BY不是我的查詢工作

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 

的正確將

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

因爲總的將是readydate和invdate 14052.50

我的查詢低於

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 

可以請你告訴我,我在做什麼錯誤

回答

0

試試這個

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