【发布时间】:2016-11-15 01:45:00
【问题描述】:
我一直试图解决这个问题,但没有成功。我有一个名为Appraisal 的表,其中有一列StatusID。我需要计算按StatusId 分组的评估数量。 Appraisal 中的某些记录在 StatusID 中有 NULL/空白值。如果评估员使用StatusId = NULL 进行评估,最终结果将返回 0。
评估
[AppraisalId] [AppraiserId] [StatusId]
1 11111 1
2 11111 2
3 11111 NULL
4 22222 4
5 22222 NULL
...
评估状态
[AppraisalStatusId] [AppraisalStatusName]
2 Assigned
3 Accepted
6 Conditionally Declined
7 Completed
10 On Hold
11 Order Not Accepted
鉴定人
[AppraiserId]
11111
22222
查询:
SELECT
AppraisalStatus.AppraisalStatusId,
COUNT(ISNULL(Appraisal.StatusId, 0)) AS "number_of_orders"
FROM
AppraisalStatus
LEFT JOIN
Appraisal ON AppraisalStatus.AppraisalStatusId = Appraisal.StatusId
WHERE
AppraiserId = :AppraiserId
JSON 格式的结果
[{
"AppraisalStatusId": 2,
"number_of_orders": 1
}, {
"AppraisalStatusId": 3,
"number_of_orders": 5
}, {
"AppraisalStatusId": 7,
"number_of_orders": 184
}, {
"AppraisalStatusId": 10,
"number_of_orders": 2
}]
【问题讨论】:
-
您是否在某处缺少 GROUP BY?
-
不确定,我已经阅读了很多解释。我只是无法让查询返回 "AppraisalStatusId": 6, "number_of_orders": 0
标签: sql sql-server rest