2011-08-23 75 views
0

我有下列的表:檢索查詢列排

 
BillNo -- Integer 
BillDate -- DateTime 
Qty  -- decimal 
ItemName -- varchar 

我想找回這種格式的結果:

 
**ITEMNAME...JAN-2011.....FEB-2011....MAR-2011** 
ITEM1 ......... 20 ..............19................18 
ITEM2 ......... 23 ..............10................9 

我嘗試這個查詢這正顯示出正確的結果,但我想要將第三列轉換爲具有不同值的行:

SELECT ITEMNAME, SUM(QTY), DATE_FORMAT(BILLDATE,'%M-%Y') FROM BILLITEMS 
GROUP BY BILLDATE 
ORDER BY YEAR(BILLDATE) DESC, MONTH(BILLDATE), ITEMNAME; 

回答

0

嘗試使用下面的查詢,但它會l在特定年份工作

SELECT ITEMNAME, year_bill, SUM(jan), SUM(feb), .... from (
    select case when MONTH(BILLDATE) = 1 then QTY else 0 end as jan, 
    case when MONTH(BILLDATE) = 2 then QTY else 0 end as feb, 
    case when MONTH(BILLDATE) = 3 then QTY else 0 end as mar, 
    ITEMNAME, 
    YEAR(BILLDATE) as year_bill 
from BILLITEMS) as temp 
GROUP BY ITEMNAME, year_bill 
+0

但是年和月並不固定。 – RKh

+0

@RPK檢查更新的查詢 –

+0

我第三個月被刪除,但它給出了錯誤:你的SQL語法有錯誤;檢查對應於您的MySQL服務器版本的手冊,以便在'MONTH(BILLDATE)= 2,然後QTY其他0結束爲feb, ITEMNAME'時在第3行選擇案例時使用正確語法 – RKh