【发布时间】:2014-04-24 21:23:15
【问题描述】:
我正在尝试查找卡在某种状态的设备,并将它们按类型分组。我在数据库中查询处于该状态的设备的count(),然后进行几次检查以查看这些设备是否符合条件。但是,它没有显示没有任何count() 的类型。我需要显示所有类型,即使 count() 没有任何内容。
例如,目前我有这个:
TYPE COUNT(DEVICE.NAME)
TYPE1 200
TYPE2 100
TYPE3 50
我需要它像这样回来:
TYPE COUNT(DEVICE.NAME)
TYPE1 200
TYPE2 100
TYPE3 50
TYPE4 0
TYPE5 0
这是我目前所拥有的:
SELECT device.type, count(device.name)
FROM device
LEFT OUTER JOIN (SELECT type, name
FROM device) b
ON device.name = b.name
WHERE device.changedon < (((SYSDATE - DATE '1970-01-01') * 24 * 60 * 60) - (90 * 24 * 60 * 60))
AND device.status != 6 AND device.status != 8 AND device.status != 13
GROUP BY device.type
ORDER BY count(device.name) DESC;
后来意识到表 b 上的联接是不必要的,但我将把它留在问题中,以便答案仍然准确反映问题。
我在子查询上尝试了所有类型的连接,结果都是一样的。
【问题讨论】:
-
我意识到 h471 上的联接是不必要的,我已将其从 SQL 语句中删除。很抱歉有任何混淆。
标签: sql oracle join count subquery