2
我有這個表在mysql中使用函數創建列別名?
sales(productid, sales_date)
我想每月銷售計數過去的12月份。
如何在列別名(不使用硬編碼)上生成月份名稱?
我嘗試這樣做: -
http://sqlfiddle.com/#!2/ee777/9
但我想以這種格式
productid Oct-12 Nov-12 Dec-12 Jan-13 Feb-13 Mar-13 Apr-13 May-13
1 0 0 3 4 2 8 2 11
2 0 5 6 8 2 0 0 0
我嘗試使用功能DATE_FORMAT(sales_date, '%M')
給列別名結果表,但它是 語法錯誤。
select productid,sum(if(DATE_FORMAT(sales_date,'%Y%m')=
DATE_FORMAT(date_sub(curdate(),interval 12 month),'%Y%m'),1,0))
`12 Months Before`,
sum(if(DATE_FORMAT(sales_date,'%Y%m')=
DATE_FORMAT(date_sub(curdate(),interval 11 month),'%Y%m'),1,0))
`11 Months Before`,
sum(if(DATE_FORMAT(sales_date,'%Y%m')=
DATE_FORMAT(date_sub(curdate(),interval 10 month),'%Y%m'),1,0))
`10 Months Before`,
sum(if(DATE_FORMAT(sales_date,'%Y%m')=
DATE_FORMAT(date_sub(curdate(),interval 9 month),'%Y%m'),1,0))
`9 Months Before`,
sum(if(DATE_FORMAT(sales_date,'%Y%m')=
DATE_FORMAT(date_sub(curdate(),interval 8 month),'%Y%m'),1,0))
`8 Months Before`,
sum(if(DATE_FORMAT(sales_date,'%Y%m')=
DATE_FORMAT(date_sub(curdate(),interval 7 month),'%Y%m'),1,0))
`7 Months Before`,
sum(if(DATE_FORMAT(sales_date,'%Y%m')=
DATE_FORMAT(date_sub(curdate(),interval 6 month),'%Y%m'),1,0))
`6 Months Before`,
sum(if(DATE_FORMAT(sales_date,'%Y%m')=
DATE_FORMAT(date_sub(curdate(),interval 5 month),'%Y%m'),1,0))
`5 Months Before`,
sum(if(DATE_FORMAT(sales_date,'%Y%m')=
DATE_FORMAT(date_sub(curdate(),interval 4 month),'%Y%m'),1,0))
`4 Months Before`,
sum(if(DATE_FORMAT(sales_date,'%Y%m')=
DATE_FORMAT(date_sub(curdate(),interval 3 month),'%Y%m'),1,0))
`3 Months Before`,
sum(if(DATE_FORMAT(sales_date,'%Y%m')=
DATE_FORMAT(date_sub(curdate(),interval 2 month),'%Y%m'),1,0))
`2 Months Before`,
sum(if(DATE_FORMAT(sales_date,'%Y%m')=
DATE_FORMAT(date_sub(curdate(),interval 1 month),'%Y%m'),1,0))
`1 Months Before`
from sales
group by productid;
我怎樣才能得到月份和年份爲別名(如:日 - 10月 - 12)代替12 Months Before
,11 Months Before
等。
感謝您的回答。但我希望獲得過去12個月的產品明智月度銷售計數,而不需要對任何日期進行硬編碼。查詢應該適用於任何日期。 – chetan
這可以很容易地實現。現在考慮到我們今天正在執行這個查詢,您希望從2012-06-29到2013-06-29或2012-06-01到2013-06-29或2012-05-01到2013的確切時間段-05-31'(意思全12個月)'?對此你的問題不清楚。 – peterm
忽略幾天。包括2012-07至2013-06。 – chetan