sql - 在 SQL Query 中进行表的水平表示
问题描述
我有每个位置价格的项目表。
Select Item, Price, location from ItemTable Order by Item, Location
这是结果集
ITEM Price Location
1 10 North
1 20 South
2 10 North
2 20 South
3 20 North
3 20 South
我想让最终结果集的呈现水平按项目分组。预期的结果将是这样的
Item North South
1 10 20
2 10 20
3 20 20
但我已经完全迷失了。
我正在使用 SQL Server 2014
解决方案
您可以使用条件聚合编写如下查询。
SELECT item,
Sum(CASE
WHEN location = 'North' THEN price
ELSE 0
END) AS North,
Sum(CASE
WHEN location = 'South' THEN price
ELSE 0
END) AS South
FROM ItemTable
GROUP BY item
如果你喜欢你也可以PIVOT
像下面这样使用。
SELECT Item, Price, location
FROM ItemTable
PIVOT(Sum(price)
FOR location IN([North],
[South])) pvt
推荐阅读
- rsync - 通过 Infiniband/RDMA 进行 Rsync
- video - 电报发送可播放的视频
- ruby-on-rails - Google::Apis::ClientError: 禁止:使用 ruby google api 使用服务帐户调用时调用者没有权限
- flutter - 颤动代码绘制屏幕下方的矩形底线 - 为什么(附示例)
- sharepoint - PowerShell 删除 14 天前的大型 SharePoint 列表项
- javascript - 跨多个磁盘驱动器的文件系统 I/O 中的 Node.js 性能:工作线程与否?
- android - 如何在运行时在android中查看曲线
- python - 即使代码看起来没问题,Django 表单也不会呈现
- javascript - 如果函数有参数,如何删除事件监听器?
- python - 使用beautifulsoup如何获得Net Seller