分组后将行值显示为列-Oracle
Posted
技术标签:
【中文标题】分组后将行值显示为列-Oracle【英文标题】:Display Row value as column after grouping- Oracle 【发布时间】:2014-01-10 05:33:50 【问题描述】:这是我的查询
SELECT
tbl_dtl_feature.customer_id,
result,
COUNT(*) AS expr1
FROM tbl_dtl_feature
WHERE tbl_dtl_feature.feature_id = 'F001'
AND TRUNC(tbl_dtl_feature.start_datetime)
BETWEEN TO_DATE('10/01/2014', 'DD/MM/YYYY') AND TO_DATE('10/01/2014', 'DD/MM/YYYY')
GROUP BY tbl_dtl_feature.result, tbl_dtl_feature.customer_id
我的结果集:
CustomerID Result Count
---------- ------- -----
44438111 Success 3
44438444 Success 1
44438111 Failure 1
预期结果集:
CustomerID Count(Success) Count(Failure)
---------- -------------- -------------
44438111 3 1
44438444 1 0
你能帮帮我吗?
【问题讨论】:
【参考方案1】:这样试试,
SELECT t.customer_id,
count(CASE WHEN result = 'Success' THEN 1 END) Count_Success,
count(CASE WHEN result = 'Failure' THEN 1 END) Count_Failure
FROM tbl_dtl_feature t
WHERE t.feature_id = 'F001'
AND trunc(t.start_datetime) BETWEEN to_date('10/01/2014', 'DD/MM/YYYY') AND to_date('10/01/2014', 'DD/MM/YYYY')
GROUP BY t.customer_id;
【讨论】:
以上是关于分组后将行值显示为列-Oracle的主要内容,如果未能解决你的问题,请参考以下文章