SQL - 计算空链接值

时间:2015-01-30 18:21:58

标签: sql

我有2个表,需要返回按类别分组的一些项目的计数。类别名称包含在另一个表中,因此它看起来像这样,而不是每个项目都有与之关联的状态

表1

Item1 | ID1 |StatusID1 
Item2 | ID2 |StatusID2 
Item3 | ID3 |StatusID2 
Item4 | ID4 |          

表2

StatusID1 | StatusA 
StatusID2 | StatusB 

我基本上需要看

StatusA | CountStatusA
StatusB | CountStatusB

我可以在有状态时显示它们但在没有分配状态时无法获取任何内容。

由于

2 个答案:

答案 0 :(得分:0)

进行条件检查,如果status为null,则根据您的要求对其进行计数或显示。假设没有状态意味着空值。

你可以这样做(如果第一个表中的状态ID只是空格) select table2.status,count(table1.id)from table2,table1 where table1.statusid = table2.statusid group by table1.statusid 联盟 选择'无状态ID',从table1计算(table1.id)table1.statusid =''

OR

您可以这样做(如果第一个表中的状态ID为null) select table2.status,count(table1.id)from table2,table1 where table1.statusid = table2.statusid group by table1.statusid 联盟 选择'没有状态ID',来自table1的count(table1.id),其中table1.statusid为null

答案 1 :(得分:0)

您可以在分组之前coalesce丢失的状态:

SELECT    COALESCE (status, 'Status missing'), COUNT(*)
FROM      table1
LEFT JOIN table2 ON table1.status_id = table2.status_id
GROUP BY  COALESCE (status, 'Status missing')