将多行中的值作为具有group by的列放在多个列上

时间:2013-09-21 21:50:42

标签: tsql sql-server-2005

是否可以按多列

按组将多个行值返回到列中

with distinct。

如果我的表是:

QUantityTypeID数量OrderDate CompanyID TypeName

-------------- -------- ----------- -------------- - ----------

1 7.0000 2013-09-02 1销售

1 4.0000 2013-09-15 1销售

1 1.0000 2013-09-16 1销售

1 1.0000 2013-09-16 2销售

2 1.0000 2013-08-25 1销售

3 1.0000 2013-08-25 1销售

4 1.0000 2013-09-11 1销售

选择应返回:

OrderDate 1 2 3 4 CompanyID TypeName

----------- ----- ----- ------ ------ -------------- - ----------

2013-08-25 NULL 1.0000 1.0000 NULL 1销售

2013-09-02 7.0000 NULL NULL NULL 1销售

2013-09-11 NULL NULL NULL 1.0000 1销售

2013-09-15 4.0000 NULL NULL NULL 1销售

2013-09-16 1.0000 NULL NULL NULL 1销售

2013-09-16 1.0000 NULL NULL NULL 2销售

1 个答案:

答案 0 :(得分:2)

您需要透视数据。

SELECT
  OrderDate, [1], [2], [3], [4], CompanyID, TypeName 
FROM test
PIVOT
(
  MAX(Quantity)
  FOR QUantityTypeID IN ([1], [2], [3], [4])
) as p

<强> SQL FIDDLE DEMO