我當前的SQL查詢需要近6個月,並選擇銷售,像這樣有沒有辦法在選擇查詢中動態生成SQL列?
SUM(CASE WHEN ci.InvoiceDate >= '20160501' AND ci.InvoiceDate <= '20160531' THEN cid.QuantityOrdered ELSE 0 END) AS 'May',
SUM(CASE WHEN ci.InvoiceDate >= '20160601' AND ci.InvoiceDate <= '20160630' THEN cid.QuantityOrdered ELSE 0 END) AS 'June',
SUM(CASE WHEN ci.InvoiceDate >= '20160701' AND ci.InvoiceDate <= '20160731' THEN cid.QuantityOrdered ELSE 0 END) AS 'July',
SUM(CASE WHEN ci.InvoiceDate >= '20160801' AND ci.InvoiceDate <= '20160831' THEN cid.QuantityOrdered ELSE 0 END) AS 'August',
SUM(CASE WHEN ci.InvoiceDate >= '20160901' AND ci.InvoiceDate <= '20160930' THEN cid.QuantityOrdered ELSE 0 END) AS 'September',
SUM(CASE WHEN ci.InvoiceDate >= '20161001' AND ci.InvoiceDate <= '20161030' THEN cid.QuantityOrdered ELSE 0 END) AS 'October',
然而,當我在十二月運行此報告,因爲我已經在這個月的名稱硬編碼,我不會得到11月的銷售數字。
理想情況下,我希望某種形式的代碼能夠動態生成最近6個月的select查詢。
這甚至可能嗎?有沒有人可以指點我的文檔來學習更多關於動態SQL的知識?
謝謝大家!
你需要這些列?或將行工作? – Amit
不,絕對需要它們作爲列 –
你想要一個[dynamic pivot](http://stackoverflow.com/questions/10404348),這在SQL Server中是可能的,但可能很麻煩。如果您可以在客戶端工具(報表,表單,網頁等)中執行此操作,則用於動態樞軸的UI工具通常會更乾淨,更容易。 –