我在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 |
答案 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
中的示例