我正在使用MS SQL 2008R2。我正在使用部分数据集(即并非所有colunms)并且无法排除重复的行。例如,以下是声明的行:
Claim Line Doctor Received Paid
02195111345 1 22924 1995-11-13 2001-10-02
02195111345 1 22924 1995-11-13 2001-10-02
02195111345 2 22924 1995-11-13 2001-10-02
02195111345 2 22924 1995-11-13 2001-10-02
02195111345 3 22924 1995-11-13 2001-10-02
02195111345 3 22924 1995-11-13 2001-10-02
02195111345 4 22924 1995-11-13 2001-10-02
02195111345 4 22924 1995-11-13 2001-10-02
02195111345 5 22924 1995-11-13 2001-10-02
02195111345 5 22924 1995-11-13 2001-10-02
我想为每个Claim + Line只选择一行。还有其他列,但它们包含Claim + Line的每个组合的相同信息。
我可以使用查询轻松识别带有重复项的行,例如:
SELECT [ClaimNum],[ClaimNum_Line]
FROM [dbo].[DamagedClaims]
GROUP BY [ClaimNum],[ClaimNum_Line]
HAVING COUNT(*) > 1
通常,我会使用此查询创建派生表并将其连接回表 - 使用其他库存(例如MAX(版本)等),但是没有用于区分重复项的列。
我考虑过了
SELECT ClaimNum], Line, MAX(DOCTOR), MAX([Date Received]), MAX([Date Paid])
但是大约有20列和7.5亿行,这似乎是很多开销(我非常同情我们的SQL Server!)。有更好的解决方案吗?
最佳, 斯科特
答案 0 :(得分:2)
只需在DISTINCT
SELECT
即可
SELECT DISTINCT Claim, Line, Doctor, Received, Paid
FROM tableName
答案 1 :(得分:2)
我看到没有列可以作为最大行的基础,请尝试使用DISTINCT
SELECT DISTINCT *
FROM tableA
答案 2 :(得分:1)
使用SELECT DISTINCT
- http://www.w3schools.com/sql/sql_distinct.asp