我有一个 sql 查询来返回 IT 票及其满意度分数,但是由于我们的票务系统的工作方式,有时会返回 2 行作为票证参考 - 1 行具有“未评级”评级,另一行具有真实评级。
我的问题是,有没有办法让查询只为每个票证参考返回一行,如果另一个评级不存在,则只返回“未评级”评级。即,当有 2 行具有相同的票证参考并且一个具有“优秀”评级和一个具有“未评级”评级时,它只返回具有“优秀”评级的行。应返回只有 1 行“未评级”的任何内容。
到目前为止,查询看起来像这样 -
SELECT DISTINCT
t.Rating_Date,
t.id AS 'Ticket Reference',
[Rating]
= CASE
When tt.[rating_id] = 20 then 'Poor'
When tt.[rating_id] = 15 then 'Average'
When tt.[rating_id] = 17 then 'Good'
When tt.[rating_id] = 6 then 'Excellent'
else 'Not Rated'
END,
[subject],
[priority],
[status],
uu.name,
[assignee_id],
[Location],
[technology]
FROM
[DB1].[dbo].[table1] t
INNER JOIN [DB1].[dbo].[table2] tt
ON t.id=tt.ticket_id
LEFT JOIN [DB1].[dbo].[table3] uu
ON t.assignee_id=uu.id
WHERE
t.rating_date > '2013-07-01'
AND status = 'closed'
AND location = 'UK'
AND technology <> 'Not Known'
AND group_id = '5678912'
ORDER BY
t-rating_date