Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL Pivot 2列_Sql_Sql Server_Pivot - Fatal编程技术网

SQL Pivot 2列

SQL Pivot 2列,sql,sql-server,pivot,Sql,Sql Server,Pivot,我有以下格式的表格 我认为我的问题比可能重复的问题有点独特,我正在尝试为两个度量顺序和成本获取重复的201601…201652列。这是一种适用于任何不依赖专有PIVOT()函数的数据库(包括SQL Server)的方法。在这样一个例子中,这样做52周有点奇怪(而且,说实话,对于阅读报告的人来说,105列结果并不是最好的输出)。 话虽如此,在这个例子中,我会在一年的四个季度而不是几周内重复这些表达式,你只需要重复52次,而不是4次。 实际上,您可以使用perl或Visual Basic或任何您喜

我有以下格式的表格


我认为我的问题比可能重复的问题有点独特,我正在尝试为两个度量顺序和成本获取重复的201601…201652列。

这是一种适用于任何不依赖专有
PIVOT()
函数的数据库(包括SQL Server)的方法。在这样一个例子中,这样做52周有点奇怪(而且,说实话,对于阅读报告的人来说,105列结果并不是最好的输出)。 话虽如此,在这个例子中,我会在一年的四个季度而不是几周内重复这些表达式,你只需要重复52次,而不是4次。 实际上,您可以使用perl或Visual Basic或任何您喜欢的方法来生成语句。 下面是:

-- the input table, don't use in real query ...
WITH
input(id,quarter,orders,cost) AS (
          SELECT 1,201601,200,1000
UNION ALL SELECT 1,201602,300,1500
UNION ALL SELECT 1,201603,330,1800
UNION ALL SELECT 1,201604,500,2500
)
-- end of input - 
SELECT
  id
, SUM(CASE quarter WHEN 201601 THEN orders END) AS "orders_201601"
, SUM(CASE quarter WHEN 201602 THEN orders END) AS "orders_201602"
, SUM(CASE quarter WHEN 201603 THEN orders END) AS "orders_201603"
, SUM(CASE quarter WHEN 201604 THEN orders END) AS "orders_201604"
, SUM(CASE quarter WHEN 201601 THEN cost   END) AS   "cost_201601"
, SUM(CASE quarter WHEN 201602 THEN cost   END) AS   "cost_201602"
, SUM(CASE quarter WHEN 201603 THEN cost   END) AS   "cost_201603"
, SUM(CASE quarter WHEN 201604 THEN cost   END) AS   "cost_201604"
FROM input
GROUP BY id;

id|orders_201601|orders_201602|orders_201603|orders_201604|cost_201601|cost_201602|cost_201603|cost_201604
 1|          200|          300|          330|          500|      1,000|      1,500|      1,800|      2,500

您使用的数据库可能存在重复?我使用的是SQL Server 12