Tsql 选择case以在列中查找相同的数据
我有这个需要的逻辑条件,希望有人能帮我编码这个 如果personid>1和ipeds列是相同的值,则报告该值,否则报告“多个”Tsql 选择case以在列中查找相同的数据,tsql,Tsql,我有这个需要的逻辑条件,希望有人能帮我编码这个 如果personid>1和ipeds列是相同的值,则报告该值,否则报告“多个” PersonId ipeds 408 3 408 3 656 6 656 1 我对此进行了编码,但当personid中的记录重复时,即使ipeds列不相同,也存在“多个”条件 (SELECT P.PersonId, CASE WHEN COUNT(P.PersonId) > 1 THEN
PersonId ipeds
408 3
408 3
656 6
656 1
我对此进行了编码,但当personid中的记录重复时,即使ipeds列不相同,也存在“多个”条件
(SELECT
P.PersonId, CASE WHEN COUNT(P.PersonId) > 1 THEN 'Multiple' ELSE MIN(I.Description) END AS IPEDS_Ethnicity
FROM
PersonEthnicity AS P
INNER JOIN
IpedsFederalCategory AS I ON P.IpedsFederalCategoryId = I.IpedsFederalCategoryId
GROUP BY P.PersonId) AS QS ON PEOPLE.PersonId = QS.PersonId
如果希望仅当IPED不同时才显示“多个”,则应准备一个查询以消除重复。就在那时,你可以运用你的逻辑。检查以下示例:
create table #t (PersonId int, ipeds int)
INSERT INTO #t VALUES (408, 3), (408, 3), (409, 1), (500, 3), (500, 4)
;WITH dt AS (
SELECT DISTINCT PersonId, ipeds
FROM #t
)
SELECT
P.PersonId, CASE WHEN COUNT(P.PersonId) > 1
THEN 'Multiple'
ELSE CAST(MIN(P.ipeds) as varchar(5)) END AS IPEDS_Ethnicity
FROM
dt AS P
GROUP BY P.PersonId
结果如下:408 3
409 1
500倍Fred,谢谢你的帮助。然而,当我运行您的示例时,这就是我得到的错误。“列'dt.ipeds'在select列表中无效,因为它既不包含在聚合函数中,也不包含在GROUP BY子句中。”当我将p.ipeds放入GROUP BY时,结果并没有如您所示。它显示为PersonId IPEDS_种族408 3 409 1 500 3 500 4该查询已修复。它缺少最小值(P.ipeds)