2017-07-06 22 views
-1

我有一個表,看起來像下面的總運行:的動態列

  W1 W2 w3 
Gold  10 2 3    
Silver  3 1 1 

,但我需要的結果:

  W1 W2 w3 
Gold  10 12 15    
Silver  3 4 5 

有什麼辦法,我可以得到這一結果?

我的SQL查詢:

SELECT 
    week1=[1],week2=[2],week3=[3] 
FROM 
(
    SELECT 
    [week]=DATEPART(ISO_WEEK,ta.enddate),ta.price 
    FROM 
    table1 ta where ta.enddate BETWEEN '2016/01/01' AND '2016/12/31' 
) src 
PIVOT 
(
    SUM(price) FOR week IN ( 
     [1],[2],[3]) 
) piv 
+0

https://stackoverflow.com/questions/44928558計算總運行/ t-sql-get-sum-of-columns – lad2025

+1

這是關於MySQL還是SQL Server?它不能同時... – DavidG

回答

0

前擺動數據

SELECT element, 
     week1=[1],week2=[2],week3=[3] 
FROM 
(
SELECT [week] = DATEPART(ISO_WEEK,ta.enddate), 
     price = sum(ta.price)Over(Partition by element Order by enddate), 
     element 
FROM table1 ta 
where ta.enddate BETWEEN '2016/01/01' AND '2016/12/31' 
) src 
PIVOT 
(
SUM(price) FOR week IN ([1],[2],[3]) 
) piv 

舊版本

SELECT element, 
     week1=[1],week2=[2],week3=[3] 
FROM 
(
SELECT [week] = DATEPART(ISO_WEEK,ta.enddate), 
     cs.price, 
     element 
FROM table1 ta 
cross apply(select sum(price) from table1 tb 
      where ta.element = tb.element and ta.enddate >= tb.enddate) cs (price) 
where ta.enddate BETWEEN '2016/01/01' AND '2016/12/31' 
) src 
PIVOT 
(
SUM(price) FOR week IN ([1],[2],[3]) 
) piv 
+0

非常感謝,它的工作 – user2173466