-
其中一半是新增乙個表,因為我沒有你的結果集,所以我把乙個表變數放在一起作為結果集。
重點是後半部分,處理邏輯是按照你的意願編寫的,前提是我沒有弄錯。
此方法的結果集每年返回資料,隨著年數的增加,行數基於城市數,但我認為您要求這樣的結果集沒有意義。
declare @tab table(name nvarchar(20), both int)
declare @tabtmp table(name nvarchar(20), both int)
declare @tabname table(name nvarchar(20))
declare @name nvarchar(20)
declare @both int
insert into @tab
select n'上海',1996
unionselect n'上海',1997
unionselect n'北京',1996
unionselect n'北京', 1997
insert into @tabname
select distinct name from @tab
select top 1 @name=name from @tab order by name asc
select @both=min(both) from @tab
while(@name is not null)
begininsert into @tabtmp
select @name,@both
update @tab set name='' where name=@name
set @name=null
select top 1 @name =name from @tab where name<>'' order by name asc
select top 1 @both=both from @tab where both>@both order by both asc
endselect * from @tabtmp
-
問乙個資料庫問題來解釋你是什麼資料庫。
資料庫的方言之間存在相當多的差異。
如果你願意,你的問題也不是很清楚。
1996年上海奧運會
1997年上海奧運會
1996年北京奧運會
1997年北京冬奧會
這樣,有 2 種方法可以做到這一點。
1) group by
選擇客戶城市、訂單日期。
按客戶城市、訂購日期分組。
2)選擇不同的客戶城市,訂單日期。
如果上海只有一條記錄,北京只有一條記錄,可以考慮取一年的最大值或最小值。
tab客戶城市訂單日期。
1996年上海奧運會
1997年上海奧運會
1996年北京奧運會
1997年北京冬奧會
選擇客戶城市、訂單日期。
from tab t1
其中訂單日期 = (從選項卡中選擇最大(訂單日期)其中 T1。客戶城市 = 客戶城市)。
Oracle DB2 也可以做到這一點。
選擇客戶城市、訂單日期。
from (選擇客戶城市、訂單日期、行號() over(按客戶城市劃分 訂單日期) rk) t
where rk = 1
-
1.有兩個相同的記錄。
這是最簡單的情況,可以使用關鍵字 distinct 刪除。
示例:從表(表名)中選擇 distinct * where (condition)。
2.有相同欄位的記錄(有主鍵ID,即唯一鍵)。
如果是這種情況,則無法使用 distinct 對其進行篩選,這需要主鍵 ID 和組的唯一性。
example:
select * from table where id in (select max(id) from table group by [de-duplicated field name list,..
3.沒有唯一的金鑰ID
example:
從表中選擇 Identity(int1,1) 作為 id,* 到 newtable(temporal table) 中
select * from newtable where id in (select max(id) from newtable group by [de-duplicated field name list,..
drop table newtable
-
解決如何在Excel Electronic**中查詢和刪除重複資料的問題。
-
批量重複資料刪除
-
如何快速刪除重複值?