2

我正在尝试将表格转换为更易于使用 Excel 操作的视图。我正在 Sql Server 中创建会计部门可以读取的视图,以便在 Excel 中创建统计信息和其他跨表数据透视表。

当前格式的表格

职业ID | 产品编号 | 是集团 | 是额外的夜晚 | 价格
-------------+------------+---------+-------------- -----+------
1 | 47 | 0 | 0 | 50
2 | 47 | 0 | 1 | 45
3 | 47 | 1 | 0 | 30
4 | 47 | 1 | 1 | 28

我要公开的视图格式

产品编号 | 价格 | 附加夜 | 团购价 | 团体额外的夜晚
----------+--------+------------------+------------+ ---------------------
47 | 50 | 45 | 30 | 28

如何在 Sql Server 2008 R2 中实现这一点?我需要快速查询,因为它将成为更大查询(使用 CTE)的一部分。

目前,我想的唯一方法是包含 4 个子查询以分别获取所有 4 个价格,但我不喜欢这种方法,它会扫描表 4 次。

4

1 回答 1

3
SELECT ProductId,
MAX(CASE 
 WHEN IsGroup=0 AND IsAdditionalNight =0 then Price
 END) as [Price],
MAX(CASE 
 WHEN IsGroup=0 AND IsAdditionalNight =1 then Price
 END) as [AdditionalNight],
MAX(CASE 
 WHEN IsGroup=1 AND IsAdditionalNight =0 then Price
 END) as [GroupPrice],
MAX(CASE 
 WHEN IsGroup=1 AND IsAdditionalNight =1 then Price
 END) as [GroupAdditionalNight] 

 FROM table1     
GROUP BY ProductId

或者你也可以使用PIVOT(我个人发现语法PIVOT比上面的方法更复杂,但没有性能差异,有些人更喜欢PIVOT)。

于 2012-09-17T14:37:04.917 回答