用如下代码查询表中数据
select defectClass,count(*) from qua_particle_iis_his where defectClass in (1,2,3,4,5,6) and virtualCode = '122009200013' Group by defectClass
显示结果如下:
其中2和4 因为没有记录。 但是我需要显示出来。
想要的显示出的结果是
defectClass count(*)
1 1036
2 0
3 788
4 0
5 296
6 130
希望哪位大佬能够帮帮我,感谢
补充维度基数。如果基数过多,建议多加一张维表,直接用这张维表作为主表关联,去空为0就行了。基数很少的话,子查询一张表。
兄弟,解决了吗,我现在也遇到这个问题了
SELECT d.* FROM
(SELECT
a.defectClass,a.c
FROM
(
SELECT
1 defectClass,
IFNULL( count( defectClass ), 0 ) c,
CASE
WHEN defectClass THEN
defectClass ELSE 0
END
FROM
qua_particle_iis_his
WHERE
defectClass =1
AND virtualCode = '122009200013'
) a
) d
UNION ALL
(
SELECT
a.defectClass,a.c
FROM
(
SELECT
2 defectClass,
IFNULL( count( defectClass ), 0 ) c,
CASE
WHEN defectClass THEN
defectClass ELSE 0
END
FROM
qua_particle_iis_his
WHERE
defectClass =2
AND virtualCode = '122009200013'
) a
)
UNION ALL
(
SELECT
a.defectClass,a.c
FROM
(
SELECT
3 defectClass,
IFNULL( count( defectClass ), 0 ) c,
CASE
WHEN defectClass THEN
defectClass ELSE 0
END
FROM
qua_particle_iis_his
WHERE
defectClass =3
AND virtualCode = '122009200013'
) a
)
UNION ALL
(
SELECT
a.defectClass,a.c
FROM
(
SELECT
4 defectClass,
IFNULL( count( defectClass ), 0 ) c,
CASE
WHEN defectClass THEN
defectClass ELSE 0
END
FROM
qua_particle_iis_his
WHERE
defectClass =4
AND virtualCode = '122009200013'
) a
)
UNION ALL
(
SELECT
a.defectClass,a.c
FROM
(
SELECT
5 defectClass,
IFNULL( count( defectClass ), 0 ) c,
CASE
WHEN defectClass THEN
defectClass ELSE 0
END
FROM
qua_particle_iis_his
WHERE
defectClass =5
AND virtualCode = '122009200013'
) a
) UNION ALL
(
SELECT
a.defectClass,a.c
FROM
(
SELECT
6 defectClass,
IFNULL( count( defectClass ), 0 ) c,
CASE
WHEN defectClass THEN
defectClass ELSE 0
END
FROM
qua_particle_iis_his
WHERE
defectClass =6
AND virtualCode = '122009200013'
) a
)