请教一个查询。表和数据都已提供 此查询自己实现采用了多个临时表 是否有简单方案

kqserver 2008-10-14 03:39:47
表一

rq djbh dwbh1 dwbh2 dwbh3
081010 003 001 002 003
081010 004 001
081010 005 002 003


表二

dwbh dwmc
001 同仁堂
002 华联超市
003 北国超市

显示结果要求

rq djbh dwmc1 dwmc2 dwmc3
081010 003 同仁堂 华联超市 北国超市
081010 004 同仁堂
081010 005 华联超市 北国超市


create table tmp_yw
(rq char(10) null,
djbh char(10) null,
dwbh1 char(10) null,
dwbh2 char(10) null,
dwbh3 char(10) null
)

create table tmp_dw
(dwbh char(10) null,
dwmc char(20) null
)
insert into tmp_yw
(rq,djbh,dwbh1,dwbh2,dwbh3)
select '081010','003','001','002','003'
union
select '081010','003','001','',''
union
select '081010','003','002','003',''


insert into tmp_dw
(dwbh,dwmc)
select '001','同仁堂'
union
select '002','华联超市'
union
select '003','北国超市'
...全文
69 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
liuweicai772 2008-10-14
  • 打赏
  • 举报
回复
老大!你的速度让我 无语! 你的答案比我刷新网页的速度还快! 佩服 佩服 非常佩服
liangCK 2008-10-14
  • 打赏
  • 举报
回复
--> liangCK小梁 于2008-10-14
--> 生成测试数据: #tb1
IF OBJECT_ID('tempdb.dbo.#tb1') IS NOT NULL DROP TABLE #tb1
CREATE TABLE #tb1 (rq VARCHAR(6),djbh VARCHAR(3),dwbh1 VARCHAR(3),dwbh2 VARCHAR(3),dwbh3 VARCHAR(3))
INSERT INTO #tb1
SELECT '081010','003','001','002','003' UNION ALL
SELECT '081010','004','001',null,null UNION ALL
SELECT '081010','005','002','003',null
--> liangCK小梁 于2008-10-14
--> 生成测试数据: #tb2
IF OBJECT_ID('tempdb.dbo.#tb2') IS NOT NULL DROP TABLE #tb2
CREATE TABLE #tb2 (dwbh VARCHAR(3),dwmc NVARCHAR(8))
INSERT INTO #tb2
SELECT '001','同仁堂' UNION ALL
SELECT '002','华联超市' UNION ALL
SELECT '003','北国超市'

--SQL查询如下:

SELECT rq,djbh,b.dwmc,c.dwmc,d.dwmc
FROM #tb1 AS a
LEFT OUTER JOIN #tb2 AS b
ON a.dwbh1=b.dwbh
LEFT OUTER JOIN #tb2 AS c
ON a.dwbh2=c.dwbh
LEFT OUTER JOIN #tb2 AS d
ON a.dwbh3=d.dwbh


/*
rq djbh dwmc dwmc dwmc
------ ---- -------- -------- --------
081010 003 同仁堂 华联超市 北国超市
081010 004 同仁堂 NULL NULL
081010 005 华联超市 北国超市 NULL

(3 行受影响)

*/

22,302

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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