【发布时间】:2009-11-17 20:45:48
【问题描述】:
我在 MySQL 中有一个选择查询,如下所示: 该查询以表格的形式执行并产生结果
Current | Past1 | Past2 | Past 3 | Past4
200 600 800 000 88
-----------------------------------------------
我想转置这些结果以获取以下形式的信息:因此我希望结果是(转置的)
Current 200
Past1 600
Past2 800
Past3 000
Past4 88
这可以使用 oracle 中的 SQL 语句来完成,还是我需要一个 PL SQL 过程。如果是 PL SQL,您能否提供一些示例参考。
select
sum(case
when CPT_ORIGINATED > SUBDATE(DATE(NOW()),30) THEN 1 else 0
end) as Current,
sum(case
when CPT_ORIGINATED > SUBDATE(DATE(NOW()),60) AND CPT_ORIGINATED < SUBDATE(DATE(NOW()),30) THEN 1 else 0
end) as Past1,
sum(case
when CPT_ORIGINATED > SUBDATE(DATE(NOW()),90) AND CPT_ORIGINATED < SUBDATE(DATE(NOW()),60) THEN 1 else 0
end) as Past2,
sum(case
when CPT_ORIGINATED > SUBDATE(DATE(NOW()),120) AND CPT_ORIGINATED < SUBDATE(DATE(NOW()),90) THEN 1 else 0
end) as Past3,
sum(case
when CPT_ORIGINATED > SUBDATE(DATE(NOW()),150) AND CPT_ORIGINATED < SUBDATE(DATE(NOW()),120) THEN 1 else 0
end) as Past4
from `cpt-prod`
where CPT_STATE <> 'Closed'
【问题讨论】: