2013-08-26 35 views
0

這可能很簡單,但我已經搜索了文檔,並且找不到它。這裏的源表:選擇在自己的列中排列標準的語句

store item date  sales 
101 00001 27-Oct-12 1 
101 00002 27-Oct-12 0 
102 00001 27-Oct-12 2 
102 00002 27-Oct-12 1 
101 00001 3-Nov-12 0 
101 00002 3-Nov-12 0 
102 00001 3-Nov-12 1 
102 00002 3-Nov-12 1 

...我想寫一個查詢利用與具有自己的列,也就是說,只要項目#賣場每月銷售的表落得00001--

monthyear store101sales otherstoresales 
10/2012 1    2 
11/2012 0    1 

下面是我tried--

select distinct 
    year(date) as SalesYear, 
    month(date) as SalesMonth, 
    sum(case when store in (101) then sales.count else 0 end) as store101sales, 
    sum(case when store in (102,103) then sales.count else 0 end) as otherstoresales, 
from source_table 
where item=00001; 
GROUP BY SalesYear, SalesMonth, store101sales, otherstoresales, 
ORDER BY SalesYear, SalesMonth, store101sales, otherstoresales; 

讚賞任何幫助的代碼;謝謝!

回答

1

你接近,不需要GROUP BY聚集,並且不知道如果MySQL允許在GROUP BY或沒有使用別名:

select year(date) as SalesYear, 
    month(date) as SalesMonth, 
    sum(case when store in (101) then sales else 0 end) as store101sales, 
    sum(case when store in (102,103) then sales else 0 end) as otherstoresales 
from source_table 
where item=00001; 
GROUP BY year(date), month(date) 
ORDER BY SalesYear, SalesMonth, store101sales, otherstoresales; 
+0

非常感謝您對本;它仍然沒有工作。這裏是我得到的錯誤:錯誤:未解決的表/關聯名稱銷售引用。 錯誤:未解決的表/關聯名稱銷售引用。 錯誤:WHEN子句2的結果與前面的結果不是相同的數據類型。 錯誤:SUM彙總功能需要數字參數。 錯誤:WHEN子句2的結果與前面的結果不是相同的數據類型。 錯誤:SUM彙總功能需要數字參數。 – America

+0

啊,沒有注意,。你有'sales.count',它會引用一個字段'count'作爲別名爲'sales'的表,所以我相信上面的更新應該這樣做。 –

+0

完美!我曾設想過提及獲得總和所需銷售對象的某種計數方法。再次感謝您的時間並幫助提高我的SQL讀寫能力。 – America