怎么写啊怎么写

xlh0053 2012-03-07 11:51:43
表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
现在要往这个表里面插入数据,要把其他代号的跟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
...全文
177 20 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
xlh0053 2012-03-08
  • 打赏
  • 举报
回复
来人啊来人
叶子 2012-03-07
  • 打赏
  • 举报
回复

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
*/
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 fredrickhu 的回复:]

又见到 master..spt_values构造数据的了。
[/Quote]

看到这样的问题就感觉蛋疼
xlh0053 2012-03-07
  • 打赏
  • 举报
回复
期待哦,等你们救我哦
--小F-- 2012-03-07
  • 打赏
  • 举报
回复
又见到 master..spt_values构造数据的了。
勿勿 2012-03-07
  • 打赏
  • 举报
回复
下午做。
xlh0053 2012-03-07
  • 打赏
  • 举报
回复
还有一点就是我是以0001为标准,就是比0001少的记录要添加,但是0001里面没有的就不要添加
比如说0006里面有个F,那么0001-0005就不要添加这条F的记录
xlh0053 2012-03-07
  • 打赏
  • 举报
回复
我是oracle,要用minus。但是不知道为什么我执行后会多出几条没有的数据,就是0001-0005里面都没有的,比如说F这样子,为什么呢
勿勿 2012-03-07
  • 打赏
  • 举报
回复
??? 还有什么问题??
xlh0053 2012-03-07
  • 打赏
  • 举报
回复
sql命令未正确结束
daozijie 2012-03-07
  • 打赏
  • 举报
回复
夜色镇歌 2012-03-07
  • 打赏
  • 举报
回复
叶子 2012-03-07
  • 打赏
  • 举报
回复
--插入
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
*/
喜阳阳 2012-03-07
  • 打赏
  • 举报
回复
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 @表CPCL

insert into @表CPCL
select tb1.代号,tb1.料号
from (
SELECT * FROM
(select DISTINCT 代号 from @表CPCL) a
CROSS JOIN
(select 料号 from @表CPCL where 代号='0001') b) tb1
left join @表CPCL tb2 on tb1.代号=tb2.代号 and tb1.料号=tb2.料号
where tb2.代号 is null

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
----添加后
代号 料号
---- ----
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
(19 行受影响)
*/
勿勿 2012-03-07
  • 打赏
  • 举报
回复
8楼的就是插入。 查询了插入前后的数据你都可以对比了。
[Quote=引用 10 楼 xlh0053 的回复:]
我是要向这个表插入数据,不是查询,不是查询
[/Quote]
xlh0053 2012-03-07
  • 打赏
  • 举报
回复
我是要向这个表插入数据,不是查询,不是查询
trunjun 2012-03-07
  • 打赏
  • 举报
回复
引用(τㄗs 阿蒙 o)的。厉害。

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
勿勿 2012-03-07
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 xlh0053 的回复:]
我是要插入,不是查询出来啊
[/Quote]那就更没问题了

--表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 行受影响)


xlh0053 2012-03-07
  • 打赏
  • 举报
回复
我是要插入,不是查询出来啊
勿勿 2012-03-07
  • 打赏
  • 举报
回复
--表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 行受影响)




34,838

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧