sql server 删除重复数据留一条记录在线等(追加100分)

来源:百度知道 编辑:UC知道 时间:2024/06/11 06:28:03
查询语句如下:
select tb11.合同号,1 as 信用证号,tb13.[地址(中文)],tb13.[地址(英文)],tb13.[公司名称(中文)],tb13.[公司名称(英文)],tb13.[银行(中文)],tb13.[银行(英文)]
,tb13.银行帐号,tb14.姓名 as 收益人姓名,tb14.家庭住址,tb15.设备申购人,cast(tb15.第一次付款比例 as varchar(50))+'%' as 开证金额的比例,cast(tb15.第一次付款比例 as varchar(50))+'%' +
'×'+cast(tb15.合同总金额 as varchar(50))+'='+cast(tb15.第一次付款比例/100*tb15.合同总金额 as varchar(50)) as 开证金额
,tb11.装运口岸,tb11.[装运口岸(英文)],'Commodity:'+tb12.货物名称 +'Specification:'+tb12.型号规格 +'Qty:'+cast(tb12.数量 as varchar(50))+tb12.数量单位 +
'Unit Price:'+cast(tb12.单价 as varchar(50))+case tb12.币种 when '美元' then 'USD'end +char(13)+char(10)+
'Total Amount:'+cast(tb12.单价*tb12.数量 as varchar(50))+case tb12.币种 when '美元' then 'USD'end as 商品描绘
from vk01 tb11
inner join vt02 tb12 on tb12.外贸合同号=tb11.合同号
inner join vu02 tb13 on tb13.FID=tb11.合作公司ID
inner join vu01 tb14 on tb14.FID=tb13.创建人ID
inner

Oracle的话,可借助RowID:
DELETE
FROM st_iuc_d_t t
WHERE t.rowid > (SELECT MIN(r.ROWID)
FROM st_iuc_d_t r
WHERE t.store = r.store
AND t.barcode1 = r.barcode1
AND t.barcode2 = r.barcode2
AND t.barcode3 = r.barcode3
AND t.barcode4 = r.barcode4
AND t.barcode5 = r.barcode5
AND t.tran_date = r.tran_date
AND t.tran_time = r.tran_time
AND t.amt = r.amt
AND t.amt_type = r.amt_type )

delete from 表 where 主键=(select top 1 主键 from 表 where 相同字段=(select 相同字段 from 表 group by 相同字段 having count(*)>1))

用select distinct field,field1 from
建立一个临时表
删除原来数据,将临时表数据插入原来表,删除临时表
或者 baidu & google