我有三张table看起来有点像这样。
人员表
| 识别号|人|
| - ------|- ------|
| 1个|名称1|
| 第二章|名称2|
| 三个|名称3|
类型到人员表
| 质量标准|个人ID|
| - ------|- ------|
| 四个|1个|
| 八个|1个|
| 十个|三个|
请求饱和度表
| 质量标准|状态ID|
| - ------|- ------|
| 四个|1个|
| 四个|1个|
| 四个|无|
| 八个|无|
| 八个|1个|
我需要计算每个人有多少个身份标识,所以结果应该是这样的。
| 人|地位|计数|
| - ------|- ------|- ------|
| 名称1|良好|三个|
| 名称1|坏|第二章|
我试过像这样使用distinct,但它不起作用。
SELECT PersonTable.Perosn AS person,
(DISTINCT RequestSatusTable.StatusId) AS status,
COUNT(RequestSatusTable.StatusId)
FROM PersonTable
JOIN TypeToPersonTable ON PersonTable.ID = TypeToPersonTable.PersonID
JOIN RequestSatusTable ON RequestSatusTable.SPECID= TypeToPersonTable.SPECID
GROUP BY PersonTable.Person
我想不出来。如果你能帮忙我将不胜感激。
1条答案
按热度按时间qojgxg4l1#
将
statusid
包含在GROUP BY
中,并使用CASE
表达式将statusid
的1
/0
转换为good
/bad
:其中,对于示例数据:
输出:
| 人员|状态|计数|
| - ------|- ------|- ------|
| 名称1|良好|三个|
| 名称1|坏|第二章|
fiddle