Sql server SQL Server-如何删除重复的第二列
我有一个类似于下面的查询,希望删除第二列/第三列中的重复行…需要一些示例,在这些示例中,我可以使用以下方法(top 1、max、min等)或其他最佳方法,而无需使用派生查询来删除重复值。谢谢JKSql server SQL Server-如何删除重复的第二列,sql-server,Sql Server,我有一个类似于下面的查询,希望删除第二列/第三列中的重复行…需要一些示例,在这些示例中,我可以使用以下方法(top 1、max、min等)或其他最佳方法,而无需使用派生查询来删除重复值。谢谢JK WITH cteEMPAssistants (executive_personnel_number, assistant_personnel_number, assistant_type, SecType) AS (SELECT DISTINCT CASE
WITH cteEMPAssistants (executive_personnel_number, assistant_personnel_number, assistant_type, SecType) AS
(SELECT DISTINCT CASE
WHEN ISNUMERIC(KA.KIT_asgn_emplid) = 1 THEN CAST(CAST(KA.KIT_asgn_emplid AS INT) AS VARCHAR(11))
ELSE ''
END AS executive_personnel_number ,
CAST(CAST(KAP.emplid AS INT) AS VARCHAR(11)) AS assistant_personnel_number ,
ISNULL(LATT1.xlatlongname, '') AS assistant_type ,
CAST(LATT1.fieldvalue AS VARCHAR(4)) AS SecType ,
ISNULL(LATT3.xlatshortname, '') AS assign_role
FROM dbo.KIT_ASGN_PRNT AS KAP
LEFT OUTER JOIN dbo.KIT_ASSIGNMENTS AS KA ON KA.emplid = KAP.emplid
AND KA.effdt = KAP.effdt
LEFT OUTER JOIN dbo.KIT_EMPLOYEES AS EXECT ON EXECT.EMPLID = KA.KIT_ASGN_EMPLID
LEFT OUTER JOIN dbo.KIT_EMPLOYEES AS ASST ON ASST.EMPLID = KAP.EMPLID
LEFT OUTER JOIN dbo.XLATITEM AS LATT1 ON LATT1.fieldname = 'KIT_ASGN_TYPE'
AND LATT1.fieldvalue = KAP.KIT_asgn_type
LEFT OUTER JOIN dbo.XLATITEM AS LATT3 ON LATT3.fieldname = 'KIT_ASGN_ROLE'
AND LATT3.fieldvalue = KA.KIT_asgn_role
AND LATT3.xlatshortname = 'Primary'
WHERE KAP.effdt =
(SELECT MAX(effdt)
FROM dbo.KIT_ASGN_PRNT
WHERE emplid = KAP.emplid
AND effdt <= GETDATE() ) --Return data only when employee and assistant active; null is for temps
AND (EXECT.EMP_STATUS = 'A'
OR EXECT.EMP_STATUS IS NULL )
AND ASST.EMP_STATUS = 'A' --Return all floating secretaries
AND (KAP.KIT_asgn_type = 'F' --Return all assigned secretaries, who are assigned to a person and not a task
OR (KAP.KIT_asgn_type IN ('A',
'AF')
AND KA.KIT_asgn_person = 'Y' ) ) )
SELECT CAST(EMP.KIT_EMPLID AS VARCHAR(15)) AS employeeNumber ,
KAP.emplid AS Assistant ,
SECRES.SecType AS SecType
FROM dbo.KIT_EMPLOYEES AS EMP
LEFT OUTER JOIN cteEMPAssistants AS SECRES ON EMP.KIT_EMPLID = SECRES.assistant_personnel_number
WHERE (EMP.EMP_STATUS = 'A')
AND (EMP.PER_ORG IN ('EMP',
'CWR'))
AND (ISNULL(EMP.KIT_NETWORK_ID, '') <> '')
您应该能够将其附加到查询的末尾:
GROUP BY EMP.KIT_EMPLID, KAP.emplid, SECRES.SecType
我正在努力理解你的问题,但我假设你想从结果集中删除第2、第3和第4行,那么你为什么不选择DISTINCT?谢谢,我将尝试下面提到的group by。如果group by起作用,那么DISTINCT,just fyialan就不起作用了。一点背景…cte以前是一个视图,名为assistant_view。assistant_视图由另一个视图sec_视图调用,该视图根据类型选择2个列:assistant_employee_编号和sectype:a=sctve,f=FLOTER,af=active FLOTER;sec_视图中有一个group by,位于assistant_employee_num、sectype上;视图sec_视图已用于在assistant_employee_num=main_employee_num上的主查询链接中的左外部联接中。您对如何在我先前提交的查询中获得相同的结果(调用使用分组依据的视图…)有何建议。谢谢我不确定我是否明白,你能重新措辞吗?(即,我无法应用GROUP BY,因为它给了我一个语法错误)
GROUP BY EMP.KIT_EMPLID, KAP.emplid, SECRES.SecType