我有以下的Oracle SQL查询:
SELECT ST.hrs_source_id,
TT.hrs_source_name,
Count(*)
FROM ps_hrs_app_profile P,
ps_hrs_rcmnt_sts S,
ps_hrs_al_log_srce ST,
ps_hrs_source TT
WHERE ST.hrs_source_id = TT.hrs_source_id
AND P.hrs_person_id = S.hrs_person_id
AND P.hrs_al_log_id = ST.hrs_al_log_id
AND S.status_code = '010'
AND S.status_dt BETWEEN '01-JAN-09' AND '31-MAR-16'
GROUP BY ST.hrs_source_id,
TT.hrs_source_name
ORDER BY TT.hrs_source_name ASC;
上述查询结果包含3列:
HRS_SOURCE_ID
、HRS_SOURCE_NAME
和COUNT
。但我想将两个COUNT
连接成一个查询。第二个查询与上面相同,但只有STATUS_CODE
应该等于'060',而在第一个查询中它等于'010'。如何在一个查询中将两个COUNT
连接在一起,以便总共有4列?请帮忙解决。
AND S.status_dt BETWEEN '01-JAN-09' AND '31-MAR-16'
,这样Oracle就不必将您的字符串隐式转换为日期了。日期应该有四位数的年份。您需要像这样:AND S.status_dt BETWEEN to_date('01/01/2009', 'dd/mm/yyyy') AND to_date('31/03/2016', 'dd/mm/yyyy')
。此外,请注意,如果您的status_dt列包含除午夜以外的时间,您将排除在3月31日午夜之后的任何内容。也就是说,一个status_dt为31/03/2016 00:00:01
的行将不会包含在您的查询结果中。 - Boneist