两个表的数据关联查询得到另一个表

tddxg 2012-06-12 04:10:24
表a
date mno time
120601 1 20
120602 1 30
表b
mno desp
1 lwl
2 sp
问题如下:先要求a和b联合查询得到新表C,c表字段如下:
date mno desp time
120601 1 lwl 20
120601 2 sp 0
120602 1 lwl 30
120602 2 sp 0
请高手赐教!
...全文
125 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
發糞塗牆 2012-06-12
  • 打赏
  • 举报
回复
貌似是一个行转列/列转行的问题,网上一大把
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

SQL code
if object_id('[a]') is not null drop table [a]
go
create table [a]([date] int,[mno] int,[time] int)
insert [a]
select 120601,1,20 union all
select 120602,1,30
go
if object_id('[b]') is not ……
[/Quote]
膜拜一下树哥
bancxc 2012-06-12
  • 打赏
  • 举报
回复
还是树哥专业
百年树人 2012-06-12
  • 打赏
  • 举报
回复
if object_id('[a]') is not null drop table [a]
go
create table [a]([date] int,[mno] int,[time] int)
insert [a]
select 120601,1,20 union all
select 120602,1,30
go
if object_id('[b]') is not null drop table [b]
go
create table [b]([mno] int,[desp] varchar(3))
insert [b]
select 1,'lwl' union all
select 2,'sp'
go

select a.date,b.mno,b.desp,isnull(time,0) as time
from (select distinct date from a) a
join b on 1=1
left join a as c on c.mno=b.mno and a.date=c.date

/**
date mno desp time
----------- ----------- ---- -----------
120601 1 lwl 20
120601 2 sp 0
120602 1 lwl 30
120602 2 sp 0

(4 行受影响)
**/
孤独加百列 2012-06-12
  • 打赏
  • 举报
回复

IF EXISTS (SELECT 1 FROM SYSOBJECTS WHERE name = 'A')
BEGIN
DROP TABLE A
END
GO
CREATE TABLE A
(
date VARCHAR(10),
mno INT,
time INT
)
GO
INSERT INTO A
SELECT '120601', 1, 20 UNION
SELECT '120602', 1, 30
IF EXISTS (SELECT 1 FROM SYSOBJECTS WHERE name = 'B')
BEGIN
DROP TABLE B
END
GO
CREATE TABLE B
(
mno INT,
desp VARCHAR(10)
)
GO
INSERT INTO B
SELECT 1, 'lwl' UNION
SELECT 2, 'sp'
GO

SELECT date, B.mno, desp, time INTO C
FROM A,B
ORDER BY date

SELECT * FROM C

22,209

社区成员

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

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