模板编码,代号,模板名称,明细编码,明细名称,数量
1 a io 12 io1 14
1 a io 13 io2 15
1 a io 14 io3 70
2 b ib 15 io4 14
2 b ib 16 io5 14
2 b ib 17 io6 14
3 cd icd 18 io7 14
3 cd icd 19 io8 14
3 cd icd 20 io9 14
3 cd icd 21 io10 14
5 o ioa 22 io11 14
6 k ak 23 io12 14
7 l al 24 io13 14
7 l al 25 io14 14
8 u au 26 io15 14
8 u au 27 io16 14
8 u au 28 io17 14
更新后结果为:
1 a io 12 io1 14
13 io2 15
14 io3 70
2 b ib 15 io4 14
16 io5 14
17 io6 14
3 cd icd 18 io7 14
19 io8 14
20 io9 14
21 io10 14
5 o ioa 22 io11 14
6 k ak 23 io12 14
7 l al 24 io13 14
25 io14 14
8 u au 26 io15 14
27 io16 14
28 io17 14
谢谢
1 a io 12 io1 14
1 a io 13 io2 15
1 a io 14 io3 70
2 b ib 15 io4 14
2 b ib 16 io5 14
2 b ib 17 io6 14
3 cd icd 18 io7 14
3 cd icd 19 io8 14
3 cd icd 20 io9 14
3 cd icd 21 io10 14
5 o ioa 22 io11 14
6 k ak 23 io12 14
7 l al 24 io13 14
7 l al 25 io14 14
8 u au 26 io15 14
8 u au 27 io16 14
8 u au 28 io17 14
更新后结果为:
1 a io 12 io1 14
13 io2 15
14 io3 70
2 b ib 15 io4 14
16 io5 14
17 io6 14
3 cd icd 18 io7 14
19 io8 14
20 io9 14
21 io10 14
5 o ioa 22 io11 14
6 k ak 23 io12 14
7 l al 24 io13 14
25 io14 14
8 u au 26 io15 14
27 io16 14
28 io17 14
谢谢
SET 字段1 = NULL
, 字段2 = NULL
, 字段3 = NULL
FROM 表名 TB
WHERE EXISTS(SELECT * FROM 表名 WHERE 字段1 = TB.字段1 AND 字段2 = TB.字段2
AND 字段3 = TB.字段3 AND 字段4 < TB.字段4)
set 模板编码='',代号='',模板名称=''
where 模板编码+代号+模板名称 not in (select top 1 模板编码+代号+模板名称 from t1 group by 模板编码,代号,模板名称)
表
Set
模板编码 = Null,
代号 = Null,
模板名称 = Null
Where
明细编码 Not In (Select Min(明细编码) From 表 Group By 模板编码, 代号, 模板名称)
13 io2 15
14 io3 70
2 b ib 15 io4 14
16 io5 14
17 io6 14
3 cd icd 18 io7 14
19 io8 14
20 io9 14
21 io10 14
5 o ioa 22 io11 14
6 k ak 23 io12 14
7 l al 24 io13 14
25 io14 14
8 u au 26 io15 14
27 io16 14
28 io17 14
(模板编码 Int,
代号 Varchar(10),
模板名称 Varchar(10),
明细编码 Int,
明细名称 Varchar(10),
数量 Int)
Insert 表 Select 1, 'a', 'io', 12, 'io1', 14
Union All Select 1, 'a', 'io', 13, 'io2', 15
Union All Select 1, 'a', 'io', 14, 'io3', 70
Union All Select 2, 'b', 'ib', 15, 'io4', 14
Union All Select 2, 'b', 'ib', 16, 'io5', 14
Union All Select 2, 'b', 'ib', 17, 'io6', 14
Union All Select 3, 'cd', 'icd', 18, 'io7', 14
Union All Select 3, 'cd', 'icd', 19, 'io8', 14
Union All Select 3, 'cd', 'icd', 20, 'io9', 14
Union All Select 3, 'cd', 'icd', 21, 'io10', 14
Union All Select 5, 'o', 'ioa', 22, 'io11', 14
Union All Select 6, 'k', 'ak', 23, 'io12', 14
Union All Select 7, 'l', 'al', 24, 'io13', 14
Union All Select 7, 'l', 'al', 25, 'io14', 14
Union All Select 8, 'u', 'au', 26, 'io15', 14
Union All Select 8, 'u', 'au', 27, 'io16', 14
Union All Select 8, 'u', 'au', 28, 'io17', 14
GO
Update
表
Set
模板编码 = Null,
代号 = Null,
模板名称 = Null
Where
明细编码 Not In (Select Min(明细编码) From 表 Group By 模板编码, 代号, 模板名称)Select * From 表
GO
Drop Table 表
--Result
/*
模板编码 代号 模板名称 明细编码 明细名称 数量
1 a io 12 io1 14
NULL NULL NULL 13 io2 15
NULL NULL NULL 14 io3 70
2 b ib 15 io4 14
NULL NULL NULL 16 io5 14
NULL NULL NULL 17 io6 14
3 cd icd 18 io7 14
NULL NULL NULL 19 io8 14
NULL NULL NULL 20 io9 14
NULL NULL NULL 21 io10 14
5 o ioa 22 io11 14
6 k ak 23 io12 14
7 l al 24 io13 14
NULL NULL NULL 25 io14 14
8 u au 26 io15 14
NULL NULL NULL 27 io16 14
NULL NULL NULL 28 io17 14
*/
set 模板编码 = null,代号 = null,模板名称 = null
where
明细编码 not in(select min(明细编码) from 表 group by 模板编码)
按楼上的语句UPDATE后.用SELECT 出来的结果不是
----------
结果是对
楼主看一样你表中模板编码, 代号, 模板名称中字段值左右是不是有空格.最好去掉再分组