合并相同的值并将其输出为一个

时间:2015-10-25 07:22:50

标签: sql sql-server sql-server-2008 tsql

我在SQL中需要一些帮助,我有下表,我想从列(AMOUNT)中删除重复值,并且只保留一个值,如下表#2所示,所以最好的做法是使用SQL?

表#1

| ID  | TRANS. ID | AMOUNT 
| 2   | 30001     | 15    
| 3   | 30001     | 15
| 4   | 30001     | 15
| 5   | 30002     | 88    
| 6   | 30002     | 88
| 7   | 30002     | 88    

我想输出如下:

表#2

| ID  | TRANS. ID | AMOUNT 
| 2   | 30001     |    
| 3   | 30001     | 15
| 4   | 30001     | 
--------------------------   "this line for demonstration only"
| 5   | 30002     |    
| 6   | 30002     | 88
| 7   | 30002     |  

1 个答案:

答案 0 :(得分:1)

由于您不能使用LAG,因为这只是在2012年或更新版本,您可以使用row_number执行类似的操作:

select
  ID, TRANSID, case when RN = 1 then AMOUNT else NULL end as AMOUNT
from
(
  select
    row_number() over (partition by TRANSID order by ID) as RN, *
  from 
    YourTable
) X

SQL Fiddle

中的示例