34,575
社区成员
发帖
与我相关
我的任务
分享
declare @表CPCL table (代号 varchar(4),料号 varchar(1))
insert into @表CPCL
select '0001','A' union all
select '0001','B' union all
select '0001','C' union all
select '0001','D' union all
select '0001','E' union all
select '0002','A' union all
select '0002','B' union all
select '0002','E' union all
select '0003','A' union all
select '0003','C' union all
select '0003','D' union all
select '0003','E' union all
select '0004','A' union all
select '0004','B' union all
select '0004','C' union all
select '0004','D' union all
select '0004','E' union all
select '0005','D' union all
select '0005','E'
SELECT * FROM
(select DISTINCT 代号 from @表CPCL) a
CROSS JOIN
(select DISTINCT 料号 from @表CPCL) b
/*
代号 料号
---- ----
0001 A
0001 B
0001 C
0001 D
0001 E
0002 A
0002 B
0002 C
0002 D
0002 E
0003 A
0003 B
0003 C
0003 D
0003 E
0004 A
0004 B
0004 C
0004 D
0004 E
0005 A
0005 B
0005 C
0005 D
0005 E
*/
--插入
declare @表CPCL table (代号 varchar(4),料号 varchar(1))
insert into @表CPCL
select '0001','A' union all
select '0001','B' union all
select '0001','C' union all
select '0001','D' union all
select '0001','E' union all
select '0002','A' union all
select '0002','B' union all
select '0002','E' union all
select '0003','A' union all
select '0003','C' union all
select '0003','D' union all
select '0003','E' union all
select '0004','A' union all
select '0004','B' union all
select '0004','C' union all
select '0004','D' union all
select '0004','E' union all
select '0005','D' union all
select '0005','E'
INSERT INTO @表CPCL
SELECT * FROM
(select DISTINCT 代号 from @表CPCL) a
CROSS JOIN
(select DISTINCT 料号 from @表CPCL) b
EXCEPT
SELECT * FROM @表CPCL
SELECT * FROM @表CPCL
/*
代号 料号
---- ----
0001 A
0001 B
0001 C
0001 D
0001 E
0002 A
0002 B
0002 E
0003 A
0003 C
0003 D
0003 E
0004 A
0004 B
0004 C
0004 D
0004 E
0005 D
0005 E
0002 C
0002 D
0003 B
0005 A
0005 B
0005 C
*/
create table mytest
(
dcode varchar(10),
lcode varchar(5)
)
insert into mytest(dcode,lcode) values('0001','A')
insert into mytest(dcode,lcode) values('0001','B')
insert into mytest(dcode,lcode) values('0001','C')
insert into mytest(dcode,lcode) values('0001','D')
insert into mytest(dcode,lcode) values('0001','E')
insert into mytest(dcode,lcode) values('0002','A')
insert into mytest(dcode,lcode) values('0002','B')
insert into mytest(dcode,lcode) values('0002','E')
insert into mytest(dcode,lcode) values('0003','A')
insert into mytest(dcode,lcode) values('0003','C')
insert into mytest(dcode,lcode) values('0003','D')
insert into mytest(dcode,lcode) values('0003','E')
insert into mytest(dcode,lcode) values('0004','A')
insert into mytest(dcode,lcode) values('0004','B')
insert into mytest(dcode,lcode) values('0004','C')
insert into mytest(dcode,lcode) values('0004','D')
insert into mytest(dcode,lcode) values('0004','E')
insert into mytest(dcode,lcode) values('0005','D')
insert into mytest(dcode,lcode) values('0005','E')
SELECT * FROM
(select DISTINCT dcode from mytest) a
CROSS JOIN
(select DISTINCT lcode from mytest) b
--表CPCL 代号 料号
--0001 A
--0001 B
--0001 C
--0001 D
--0001 E
--0002 A
--0002 B
--0002 E
--0003 A
--0003 C
--0003 D
--0003 E
--0004 A
--0004 B
--0004 C
--0004 D
--0004 E
--0005 D
--0005 E
create table CPCL (代号 varchar(20), 料号 varchar(20))
insert into CPCL values('0001','A')
insert into CPCL values('0001' ,'B')
insert into CPCL values('0001' ,'C')
insert into CPCL values('0001' ,'D')
insert into CPCL values('0001' ,'E')
insert into CPCL values('0002','A')
insert into CPCL values('0002', 'B')
insert into CPCL values('0002', 'E')
insert into CPCL values('0003', 'A')
insert into CPCL values('0003' ,'C')
insert into CPCL values('0003', 'D')
insert into CPCL values('0003', 'E')
insert into CPCL values('0004', 'A')
insert into CPCL values('0004', 'B')
insert into CPCL values('0004' ,'C')
insert into CPCL values('0004' ,'D')
insert into CPCL values('0004' ,'E')
insert into CPCL values('0005', 'D')
insert into CPCL values('0005' ,'E')
--现在要往这个表里面插入数据,要把其他代号的跟0001做比较,补上没有的数据,结果是这样
--表CPCL 代号 料号
-- 0001 A
-- 0001 B
-- 0001 C
-- 0001 D
-- 0001 E
-- 0002 A
-- 0002 B
-- 0002 C
-- 0002 D
-- 0002 E
-- 0003 A
-- 0003 B
-- 0003 C
-- 0003 D
-- 0003 E
-- 0004 A
-- 0004 B
-- 0004 C
-- 0004 D
-- 0004 E
-- 0005 A
-- 0005 B
-- 0005 C
-- 0005 D
-- 0005 E
select * from CPCL
insert into CPCL select * from (
select f.代号,f.料号 from (
select * from (
(
(select distinct 代号 from CPCL)w full join (select 料号 from CPCL where 代号='0001')s on 1=1)
))f full join CPCL e on f.代号=e.代号 and f.料号=e.料号 where e.代号 is null
)s
select * from CPCL
drop table CPCL
-------更新前
代号 料号
-------------------- --------------------
0001 A
0001 B
0001 C
0001 D
0001 E
0002 A
0002 B
0002 E
0003 A
0003 C
0003 D
0003 E
0004 A
0004 B
0004 C
0004 D
0004 E
0005 D
0005 E
(19 行受影响)
(6 行受影响)
-----------------更新后
代号 料号
-------------------- --------------------
0001 A
0001 B
0001 C
0001 D
0001 E
0002 A
0002 B
0002 E
0003 A
0003 C
0003 D
0003 E
0004 A
0004 B
0004 C
0004 D
0004 E
0005 D
0005 E
0002 C
0002 D
0003 B
0005 A
0005 B
0005 C
(25 行受影响)
--表CPCL 代号 料号
--0001 A
--0001 B
--0001 C
--0001 D
--0001 E
--0002 A
--0002 B
--0002 E
--0003 A
--0003 C
--0003 D
--0003 E
--0004 A
--0004 B
--0004 C
--0004 D
--0004 E
--0005 D
--0005 E
create table CPCL (代号 varchar(20), 料号 varchar(20))
insert into CPCL values('0001','A')
insert into CPCL values('0001' ,'B')
insert into CPCL values('0001' ,'C')
insert into CPCL values('0001' ,'D')
insert into CPCL values('0001' ,'E')
insert into CPCL values('0002','A')
insert into CPCL values('0002', 'B')
insert into CPCL values('0002', 'E')
insert into CPCL values('0003', 'A')
insert into CPCL values('0003' ,'C')
insert into CPCL values('0003', 'D')
insert into CPCL values('0003', 'E')
insert into CPCL values('0004', 'A')
insert into CPCL values('0004', 'B')
insert into CPCL values('0004' ,'C')
insert into CPCL values('0004' ,'D')
insert into CPCL values('0004' ,'E')
insert into CPCL values('0005', 'D')
insert into CPCL values('0005' ,'E')
--现在要往这个表里面插入数据,要把其他代号的跟0001做比较,补上没有的数据,结果是这样
--表CPCL 代号 料号
-- 0001 A
-- 0001 B
-- 0001 C
-- 0001 D
-- 0001 E
-- 0002 A
-- 0002 B
-- 0002 C
-- 0002 D
-- 0002 E
-- 0003 A
-- 0003 B
-- 0003 C
-- 0003 D
-- 0003 E
-- 0004 A
-- 0004 B
-- 0004 C
-- 0004 D
-- 0004 E
-- 0005 A
-- 0005 B
-- 0005 C
-- 0005 D
-- 0005 E
select * from (
( select distinct 代号 from CPCL)w join (select 料号 from CPCL where 代号='0001')s on 1=1
)
drop table CPCL
代号 料号
-------------------- --------------------
0001 A
0001 B
0001 C
0001 D
0001 E
0002 A
0002 B
0002 C
0002 D
0002 E
0003 A
0003 B
0003 C
0003 D
0003 E
0004 A
0004 B
0004 C
0004 D
0004 E
0005 A
0005 B
0005 C
0005 D
0005 E
(25 行受影响)