我只想选择唯一的行,而不要重复。在这种情况下,我只希望返回4行。如何删除重复项?
SELECT
d.FirstName, d.LastName, d.DateOfBirth, d.Gender, d.SSN, d.Gender, d.Race,
d.HobbyInterest, d.PhysicalDescription, pf.[No of Religious Donations]
FROM
(SELECT
pf.*,
COUNT(Religious) OVER (PARTITION BY Person_Id) as 'No of Religious Donations'
FROM
vw_profileFact pf) pf
JOIN
vw_dossier d ON pf.Person_Id = d.Person_Id
WHERE
[No of Religious Donations] > 2
ORDER BY
[No of Religious Donations] DESC;
答案 0 :(得分:2)
我有点困惑。为什么要使用窗口功能?
SELECT d.*, pf.num_religious_donations
FROM vw_dossier d JOIN
(SELECT p.person_id,
COUNT(p.Religious) AS num_religious_donations
FROM vw_profileFact p
GROUP BY p.person_id
) pf
ON pf.Person_Id = d.Person_Id
WHERE num_religious_donations> 2
ORDER BY pf.num_religious_donations DESC;
如果您希望每人 排一行,那么聚合是合适的。
答案 1 :(得分:0)
SELECT DISTINCT d.FirstName, d.LastName, d.DateOfBirth, d.Gender, d.SSN, d.Gender, d.Race, d.HobbyInterest,
d.PhysicalDescription, pf.[No_of_Rel_Donations]
FROM (SELECT pf.*, COUNT(Religious) OVER (PARTITION BY Person_Id) as No_of_Rel_Donations
FROM vw_profileFact pf
) pf
JOIN vw_dossier d
ON pf.Person_Id = d.Person_Id
WHERE [No of Religious Donations] > 2
ORDER BY [No of Religious Donations] DESC;