同一语句中的SQL属性变量
使用以下语句可以根据状态为我提供4列位置、描述、父项、计数:同一语句中的SQL属性变量,sql,oracle,Sql,Oracle,使用以下语句可以根据状态为我提供4列位置、描述、父项、计数: SELECT KINCIDENT.location, LOCATIONS.description, LOCHIERARCHY.parent, count(KINCIDENT.incnum) FROM KINDICENT, LOCATIONS, LOCHIERARCHY WHERE KINCIDENT.location = LOCATIONS.location and LOCATIONS
SELECT
KINCIDENT.location, LOCATIONS.description,
LOCHIERARCHY.parent, count(KINCIDENT.incnum)
FROM
KINDICENT, LOCATIONS, LOCHIERARCHY
WHERE
KINCIDENT.location = LOCATIONS.location
and LOCATIONS.location = LOCHIERARCHY.location
AND KINCIDENT.status = 'ECCAPR'
GROUP BY
KINCIDENT.location, LOCATIONS.description, LOCHIERARCHY.parent
ORDER BY
parent;
但是,我希望第5列给出计数,但当KINCIDENT.status='FSAPR'时。如何指定每个计数列的状态?您需要条件聚合。您还应该学习使用显式联接: 我还引入了表别名,这通常使查询更易于编写和读取。-20多年前,在ANSI-92 SQL标准中,用正确的ANSI JOIN语法取代了老式的逗号分隔表列表样式,不鼓励使用它
SELECT k.location, l.description, h.parent,
SUM(CASE WHEN k.status = 'ECCAPR' THEN 1 ELSE 0 END) as cnt_ECCAPR,
SUM(CASE WHEN k.status = 'FSAPR' THEN 1 ELSE 0 END) as cnt_FSAPR
FROM KINDICENT k JOIN
LOCATIONS l
ON k.location = l.location JOIN
LOCHIERARCHY h
ON l.location = h.location
GROUP BY k.location, l.description, h.parent
ORDER BY parent;