我当前的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工具通常会更干净,更容易。 –