如何在不使用SQL中使用枢轴函数的情况下旋转?
我想在不使用任何pivot
函数的情况下旋转表,但仅使用纯SQL(例如,postgresql语法)。
因此,以此数据集为例:
Order | Element | Value |
---------------------------
1 | Item | Bread |
1 | Quantity | 3 |
1 | TotalCost | 3,30 |
2 | Item | Pizza |
2 | Quantity | 2 |
2 | TotalCost | 10 |
3 | Item | Pasta |
3 | Quantity | 5 |
3 | TotalCost | 2,50 |
我希望可以在order
列上枢转,并具有类似的单曲:
Order | Item | Quantity | TotalCost |
-------------------------------------
1 | Bread | 3 | 3,30 |
2 | Pizza | 2 | 10 |
3 | Pasta | 5 | 2,50 |
我将如何在不使用任何枢轴函数的情况下再次实现?
I'd like to pivot a table without using any PIVOT
function but using pure SQL only (let's say PostgreSQL syntax for example).
So having this data-set as an example:
Order | Element | Value |
---------------------------
1 | Item | Bread |
1 | Quantity | 3 |
1 | TotalCost | 3,30 |
2 | Item | Pizza |
2 | Quantity | 2 |
2 | TotalCost | 10 |
3 | Item | Pasta |
3 | Quantity | 5 |
3 | TotalCost | 2,50 |
I'd expect to pivot on the Order
column and having somenthing like:
Order | Item | Quantity | TotalCost |
-------------------------------------
1 | Bread | 3 | 3,30 |
2 | Pizza | 2 | 10 |
3 | Pasta | 5 | 2,50 |
How would I achieve that, once again, without using any pivot function?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
解决方案A
使用
语句时:
解决方案B
使用 self
左JOIN JOIN
s:后者的效率可能不那么高效,但是有用的用例可能有用。
Solution A
using
CASE WHEN
statements:Solution B
Using self
LEFT JOIN
s:The latter might not be as much as efficient but there are use case in which might come useful.
在Postgres中,您将使用
filter
:请注意,
order
是SQL关键字,因此对于列名称是一个不好的选择。In Postgres, you would use
FILTER
:Note that
ORDER
is a SQL Keyword so it is a bad choice for a column name.