我从jydxx 和hwxx 两张表中查询个别字段 插入fhqd表中 能不能剔除重复的数据再插入???
如我用 select jydxx.fhrxm,jydxx.shrxm,jydxx.shrdh,jydxx.zdz,jydxx.sxhh,hwxx.jydbh,hwxx.hwmc,hwxx.jianshu,hwxx.bxe,hwxx.zyf,jydxx.yingjje,jydxx.xianjin,jydxx.qiankuan,jydxx.yuejie,jydxx.shangfu,jydxx.jsfs,jydxx.sqje,jydxx.dshk from hwxx,jydxx where hwxx.jydbh=jydxx.jydbh 查询出这么两条记录
jydbh hwmc jianshu dshk
001 A 1 200
001 B 2 200
这两条记录其实是同一单 只是一对多的关系 我要插入到fhqd 中 只需插入
001 A 1 200
B 2
即可 可以做到?
9 个解决方案
#1
CREATE TABLE [TB] (
[ID] [int] IDENTITY (1, 1) NOT NULL ,
[ITEM] [int] NULL ,
[NOTE] [nvarchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,
CONSTRAINT [PK_TB] PRIMARY KEY CLUSTERED
(
[ID]
) ON [PRIMARY]
) ON [PRIMARY]
GO
INSERT INTO TB (ITEM, NOTE) SELECT 3,'XX'
INSERT INTO TB (ITEM, NOTE) SELECT 3,'XX'
INSERT INTO TB (ITEM, NOTE) SELECT 4,'XX'
INSERT INTO TB (ITEM, NOTE) SELECT 5,'XX'
INSERT INTO TB (ITEM, NOTE) SELECT 5,'XX'
INSERT INTO TB (ITEM, NOTE) SELECT 6,'XX'
SELECT * FROM TB
/*-----------------------
3 XX
3 XX
4 XX
5 XX
5 XX
6 XX
*/
SELECT
ITEM=CASE WHEN ID=(
SELECT MIN(ID)
FROM TB
WHERE ITEM=A.ITEM
)
THEN RTRIM(ITEM) ELSE '' END,
NOTE
FROM TB AS A
ORDER BY ID
/*
ITEM NOTE
------------ --------------------
3 XX
XX
4 XX
5 XX
XX
6 XX
#2
还是不懂啊 HEROWANG 能帮我写出来?
#3
对于重复的数据,用null填充就行了
#4
兄弟 帮帮忙 我对sql不熟 帮忙写出来 我试试
#5
交给HEROWANG 了,俺路过帮顶..
#6
帮帮忙拉 我对sql不是很熟
SELECT
ITEM=CASE WHEN ID=(
SELECT MIN(ID)
FROM TB
WHERE ITEM=A.ITEM
)
THEN RTRIM(ITEM) ELSE '' END,
NOTE
FROM TB AS A
ORDER BY ID
没用过 今天第一次见
SELECT
ITEM=CASE WHEN ID=(
SELECT MIN(ID)
FROM TB
WHERE ITEM=A.ITEM
)
THEN RTRIM(ITEM) ELSE '' END,
NOTE
FROM TB AS A
ORDER BY ID
没用过 今天第一次见
#7
实在不行就插入后再用变量更新为'',方法不只一种.
#8
帮顶
#9
方法不止一种 我连一种都没学会 教教我吧 htl258
#1
CREATE TABLE [TB] (
[ID] [int] IDENTITY (1, 1) NOT NULL ,
[ITEM] [int] NULL ,
[NOTE] [nvarchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,
CONSTRAINT [PK_TB] PRIMARY KEY CLUSTERED
(
[ID]
) ON [PRIMARY]
) ON [PRIMARY]
GO
INSERT INTO TB (ITEM, NOTE) SELECT 3,'XX'
INSERT INTO TB (ITEM, NOTE) SELECT 3,'XX'
INSERT INTO TB (ITEM, NOTE) SELECT 4,'XX'
INSERT INTO TB (ITEM, NOTE) SELECT 5,'XX'
INSERT INTO TB (ITEM, NOTE) SELECT 5,'XX'
INSERT INTO TB (ITEM, NOTE) SELECT 6,'XX'
SELECT * FROM TB
/*-----------------------
3 XX
3 XX
4 XX
5 XX
5 XX
6 XX
*/
SELECT
ITEM=CASE WHEN ID=(
SELECT MIN(ID)
FROM TB
WHERE ITEM=A.ITEM
)
THEN RTRIM(ITEM) ELSE '' END,
NOTE
FROM TB AS A
ORDER BY ID
/*
ITEM NOTE
------------ --------------------
3 XX
XX
4 XX
5 XX
XX
6 XX
#2
还是不懂啊 HEROWANG 能帮我写出来?
#3
对于重复的数据,用null填充就行了
#4
兄弟 帮帮忙 我对sql不熟 帮忙写出来 我试试
#5
交给HEROWANG 了,俺路过帮顶..
#6
帮帮忙拉 我对sql不是很熟
SELECT
ITEM=CASE WHEN ID=(
SELECT MIN(ID)
FROM TB
WHERE ITEM=A.ITEM
)
THEN RTRIM(ITEM) ELSE '' END,
NOTE
FROM TB AS A
ORDER BY ID
没用过 今天第一次见
SELECT
ITEM=CASE WHEN ID=(
SELECT MIN(ID)
FROM TB
WHERE ITEM=A.ITEM
)
THEN RTRIM(ITEM) ELSE '' END,
NOTE
FROM TB AS A
ORDER BY ID
没用过 今天第一次见
#7
实在不行就插入后再用变量更新为'',方法不只一种.
#8
帮顶
#9
方法不止一种 我连一种都没学会 教教我吧 htl258