SQL Count次数值出现在另一个表的特定列中

时间:2018-03-14 11:24:36

标签: sql sql-server

好的,这是我的问题我正在尝试创建一个视图来计算在另一个表中使用特定值的次数。

我的观点就像这样

SELECT 
table1.id AS code_id,
table2.asset_standard_id,
       Count(table2.pkey) AS COUNT
FROM table1  LEFT JOIN table2 
ON table2.code_id = table1.Id
where table1.code_type = (select pkey from imtbl_code_type where imtbl_code_type.id = 'A-Problem') and table2.asset_standard_id = '25209-45MEO'
GROUP BY table1.id,
table2.asset_standard_id
order by count

这会返回计数,但我的问题是我也想显示零。

我认为这不可能,但任何帮助都会受到赞赏,我不知所措。

谢谢!

更新(感谢输入:))这是一个通过传入asset_standard_id来调用的视图,所以我不确定我是否可以在那里做。

以下是一些示例 客户端将通过c#接口将asset_standard_id 25209-45MEO输入Active Reports。然后,该视图将执行以返回找到的所有出现,以及未出现的出现。

Table 1                        ||   table 2
---------------------------------
Code  | asset_standard_id       ||  Code
----------------------------------------------
c1      25209-45MEO            ||  c1
c3      25209-45MEO            ||  c2
c3      25209-45MEO            ||  c3

And what I would love to see in the results are:
code_id || asset_standard_id || count
c3           25209-45MEO         2
c1           25209-45MEO         1
c2           25209-45MEO         0

1 个答案:

答案 0 :(得分:1)

second 表中的条件需要在on子句中:

select t1.id AS code_id, t2.asset_standard_id,
       Count(t2.pkey) as cnt
from table1 t1 left join
     table2 t2
     on t2.code_id = t1.Id and
        t2.asset_standard_id = '25209-45MEO'
where t1.code_type = (select ict.pkey from imtbl_code_type ict where ict.id = 'A-Problem')
group by t1.id, t2.asset_standard_id
order by cnt;

请注意,我更改了查询以使用表别名。这使查询更容易编写和阅读。