SQL 服务器 : multiple rows with same column values except one

标签 sql sql-server tsql

我有这样的数据:

name_text   ----------c_num---d_type-----unique_id----------------------v_text--r_ticket_id
29311875_FAD_V100.doc 3560709 Contract 21DABDDF49BA41289F1905D1D6B79ABF 2,01    28600206
29311875_FAD_V100.doc 3560709 Contract 21DABDDF49BA41289F1905D1D6B79ABF 2,01    28600240
Copy.docx             3560715 Guide    9D06F8EFF4EC4A2D862F5A0DB3BA357B 2       28600219

如果 name_textc_numd_type<,我只想选择 r_ticket_id 列中值较大的一行unique_idv_text 列值相等。

在这些情况下,使用 select 语句应该只获取这些列。

name_text   ----------c_num---d_type-----unique_id----------------------v_text--r_ticket_id
29311875_FAD_V100.doc 3560709 Contract 21DABDDF49BA41289F1905D1D6B79ABF 2,01    28600240
Copy.docx             3560715 Guide    9D06F8EFF4EC4A2D862F5A0DB3BA357B 2       28600219

完成这项工作的确切 SQL 查询是什么?

最佳答案

当记录可能具有相同的唯一 ID 但每一列的值不同时,这可能会有所帮助。利用 ROW_NUMBER 和窗口函数。我猜它们已经出现在 sql-server 2005 上。

SELECT name_text,c_num,d_type,unique_id,v_text,r_ticket_id
FROM
    (
        SELECT  name_text, c_num, d_type, unique_id, v_text, r_ticket_id,
                ROW_NUMBER() OVER (PARTITION BY unique_id 
                                   ORDER BY r_ticket_id DESC) rn
        FROM tableName
    ) x
WHERE x.rn = 1

SQLFiddle Demo

关于SQL 服务器 : multiple rows with same column values except one,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12998801/

相关文章:

sql-server - 使用分组依据计算总行数

sql - 将总值存储到 SQL 数据库中是否明智?

php - 如何选择一条记录,更新它并确保它没有被更新?

php - MySQL选择匹配的id,输出到json

sql - TSQL 语法对 cte 内的前 n 个结果求和

SQL Server 2008 多个 "LIKE"问题

sql - 在 SQL Server 中通过用前导零填充来格式化数字

sql - PostgreSQL 9.3 : Display result in specific format using array_agg function

sql - 如何在使用 dateadd() 和 getdate() 时只获取日期部分

sql-server - 为什么 SQL Server 是 Big Endian?