Oracle 11G中的Cross Tab PIVOT查询
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle 11G中的Cross Tab PIVOT查询相关的知识,希望对你有一定的参考价值。
我有一张桌子如下
CODE PH_NUMBER SUM(S.DURATION) MIN(T.START_TIME) CAMPAIGN
35039663 9250993319 120 19-Dec-17 297
35039725 917050139125 50 19-Dec-17 68
35039725 917050139125 370 19-Dec-17 297
35039726 919470833038 3370 19-Dec-17 68
35039726 919470833038 390 19-Dec-17 297
我需要的是
code Ph_number sum(duration) Min(start_time) 297_count 68_count
35039663 9250993319 120 19-Dec-17 1 0
35039725 917050139125 50+370 19-Dec-17 1 1
35039726 919470833038 3370+390 19-Dec-17 1 1
如何在Oracle 11G中实现这一目标?谢谢
答案
你可以通过sum
decode
(不需要使用pivot
条款)来轻松使用它:
select code, ph_number,
sum(duration) "Total Duration",
min(to_char(start_time,'dd-Mon-yy')) "Min Start Time",
sum(decode(campaign,297,1,0)) "297_count",
sum(decode(campaign,68,1,0)) "68_count"
from mytable
group by code, ph_number
order by code;
顺便说一句,在ph_number
表达式中使用列group by
没有问题,因为它的值对于单个code
列重复。
以上是关于Oracle 11G中的Cross Tab PIVOT查询的主要内容,如果未能解决你的问题,请参考以下文章