我需要一个查询,它会给出像下面给出的结果
createddate recordcount acceptdate submitdate createddate
27-MAR-16 24 36 11
28-MAR-16 79 207 58
作为引用,我提供了一些查询,我想将它们合并到一个查询中
select trim(date_created) createddate,count(*) recordcount
from man
where status IN ('CREATED')and date_created>sysdate-15
group by trim(date_created) ORDER BY TO_DATE(createddate,'DD/MM/YYYY');
此查询的结果如下。
createddate recordcount
27-MAR-16 11
28-MAR-16 58
第二个查询
select trim(DATE_SUB) submitdate,count(*) recordcount
from man
where status IN ('SUBMITTED')and DATE_SUB>sysdate-15
group by trim(date_sub) ORDER BY TO_DATE(submitdate,'DD/MM/YYYY');
此查询的结果类似于
submitdate recordcount
27-MAR-16 36
28-MAR-16 207
第三个查询就像 -
select trim(DATE_PUB) acceptdate,count(*) recordcount
from man
where status IN ('ACCEPTED')and DATE_PUB>sysdate-15
group by trim(DATE_PUB) ORDER BY TO_DATE(acceptdate,'DD/MM/YYYY');
acceptdate recordcount
27-MAR-16 24
28-MAR-16 79
我如何合并这三个查询,以便我可以在单个查询中获得所有查询的计数?这会给我这样的结果
createddate recordcount acceptdate submitdate createddate
27-MAR-16 24 36 11
28-MAR-16 79 207 58
最佳答案
您的第一个查询
where
子句有date
,但第二个查询
where
子句日期为DATE_P
。
尝试这样
SELECT Trim(date) createddate,
COUNT(*) recordcount,
SUM(case when status = 'A' then 1 else 0 end) as a,
SUM(case when status = 'S' then 1 else 0 end) as s,
SUM(case when status = 'C' then 1 else 0 end) as c,
SUM(case when status = 'R' then 1 else 0 end) as r
FROM man
WHERE status IN ('A','S','C','R')and date >sysdate-15
GROUP BY trim(date) ORDER BY createddate;
关于sql - 选择查询输出不符合预期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36543204/