【发布时间】:2014-10-22 16:29:14
【问题描述】:
我有一个类似的问题No duplicates in SQL query
我有这个:
+----------+-----------------+----------+----------+-----------+----------+
| TAFIELDA | DESCRIPTION | TBFIELDA | TBFIELDB | DOCNUMBER | TCFIELDB |
+----------+-----------------+----------+----------+-----------+----------+
| 1000 | some data | 2000 | 1000 | 525 | 2000 |
| 1001 | some other data | 2000 | 1001 | 525 | 2000 |
+----------+-----------------+----------+----------+-----------+----------+
预期结果:
+----------+-----------------+----------+----------+-----------+----------+
| TAFIELDA | DESCRIPTION | TBFIELDA | TBFIELDB | DOCNUMBER | TCFIELDB |
+----------+-----------------+----------+----------+-----------+----------+
| 1001 | some other data | 2000 | 1001 | 525 | 2000 |
+----------+-----------------+----------+----------+-----------+----------+
我只需要DocNumber = 525 中的最高TAFIELDA 值,所以我这样做了:
SELECT max(tAFieldA) tAFieldA,DocNumber
FROM TABLEA A
INNER JOIN TABLEB B ON A.TAFIELDA = B.TBFIELDB
INNER JOIN TABLEC C ON B.tBFieldA = C.tCFieldB
where DocNumber = 525
group by (DocNumber)
该查询只返回我正在查找的行,问题是如果我添加另一个不能汇总的字段,例如Description,我会再次获得几条记录。
¿我怎样才能在 sample DB 的所有字段中为每个 DocNumber 获取一条记录?
【问题讨论】:
-
MS SQL 2008 : Delete "duplicates" to select most recent results using multiple columns with no PK 的可能副本。处理重复是我们在这里遇到的最常见的问题之一。
标签: sql sql-server sql-server-2008