如何解决如何在SQL中转换和旋转
我有一个类似以下的表格
我想计算每种产品并进行转化
t1
customer product
A a
A b
A c
B a
B c
C a
我想要的结果如下,
customer product(a) product(b) product(c)
A 1 1 1
B 1 0 1
C 1 0 0
有什么方法可以转换吗?
谢谢
解决方法
您可以使用conditional aggregation
select customer,count(case when product='a' then 1 end) as product_a,count(case when product='b' then 1 end) as product_b,count(case when product='c' then 1 end) as product_c
from tablename
group by customer
另一个选择可能是使用pivot operator
-
SELECT * FROM t
PIVOT (count(product) FOR product IN
( 'a' AS product_a,'b' AS product_b,'c' AS product_c ))
,
仍然存在另一种条件聚合方法,该方法通过使用Oracle数据库特有的传统DECODE()函数进行操作。如果乘积与文字('a'
,'b'
或'c'
)匹配,则其中的1的值相加,否则返回零(else
):
SELECT customer,SUM(DECODE(product,'a',1,0 )) AS product_a,'b',0 )) AS product_b,'c',0 )) AS product_c
FROM t
GROUP BY customer
,
select * from table1
pivot(count(product)
for product
in ('a' "product(a)",'b' "product(b)",'c' "product(c)",'d' "product(d)"));
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。