表tb1:
id no
001 A
001 B
001 C
001 D
001 E
001 F
001 G表tb2:
id button date
001 保存 2011-1-1
001 修改 2011-1-2
001 重复保存 2011-1-3
001 提交 2011-1-4根据上面2个表的内容,其中id是主键,查询出下面的结果。感谢大家先哈。。
查询结果:
id no 保存date 修改date 重复保存date 提交date
001 A 2011-1-1 2011-1-2 2011-1-3 2011-1-4
001 B 2011-1-1 2011-1-2 2011-1-3 2011-1-4
001 C 2011-1-1 2011-1-2 2011-1-3 2011-1-4
001 D 2011-1-1 2011-1-2 2011-1-3 2011-1-4
001 E 2011-1-1 2011-1-2 2011-1-3 2011-1-4
001 F 2011-1-1 2011-1-2 2011-1-3 2011-1-4
001 G 2011-1-1 2011-1-2 2011-1-3 2011-1-4
id no
001 A
001 B
001 C
001 D
001 E
001 F
001 G表tb2:
id button date
001 保存 2011-1-1
001 修改 2011-1-2
001 重复保存 2011-1-3
001 提交 2011-1-4根据上面2个表的内容,其中id是主键,查询出下面的结果。感谢大家先哈。。
查询结果:
id no 保存date 修改date 重复保存date 提交date
001 A 2011-1-1 2011-1-2 2011-1-3 2011-1-4
001 B 2011-1-1 2011-1-2 2011-1-3 2011-1-4
001 C 2011-1-1 2011-1-2 2011-1-3 2011-1-4
001 D 2011-1-1 2011-1-2 2011-1-3 2011-1-4
001 E 2011-1-1 2011-1-2 2011-1-3 2011-1-4
001 F 2011-1-1 2011-1-2 2011-1-3 2011-1-4
001 G 2011-1-1 2011-1-2 2011-1-3 2011-1-4
--> Author :
--> Date : 2011-06-29 10:52:54
if object_id('[tb1:]') is not null drop table [tb1]
go
create table [tb1] (id nvarchar(6),no nvarchar(2))
insert into [tb1]
select '001','A' union all
select '001','B' union all
select '001','C' union all
select '001','D' union all
select '001','E' union all
select '001','F' union all
select '001','G'
--> Title : Generating test data [tb2:]
--> Author :
--> Date : 2011-06-29 10:52:54
if object_id('[tb2:]') is not null drop table [tb2]
go
create table [tb2] (id nvarchar(6),button nvarchar(8),date datetime)
insert into [tb2]
select '001','保存','2011-1-1' union all
select '001','修改','2011-1-2' union all
select '001','重复保存','2011-1-3' union all
select '001','提交','2011-1-4'select * from [tb1]
select * from [tb2]
SELECT tb1.id,tb1.no,
MAX(CASE WHEN button = '保存' THEN CONVERT(VARCHAR(10),tb2.date,120) ELSE '' END) AS '保存Date',
MAX(CASE WHEN button = '修改' THEN CONVERT(VARCHAR(10),tb2.date,120) ELSE '' END) AS '修改Date',
MAX(CASE WHEN button = '重复保存' THEN CONVERT(VARCHAR(10),tb2.date,120) ELSE '' END) AS '重复保存Date',
MAX(CASE WHEN button = '提交' THEN CONVERT(VARCHAR(10),tb2.date,120) ELSE '' END) AS '提交Date'
FROM tb1
FULL JOIN tb2 ON tb1.id = tb2.id
GROUP BY tb1.id,tb1.no
/*
id no 保存Date 修改Date 重复保存Date 提交Date
------ ---- ---------- ---------- ---------- ----------
001 A 2011-01-01 2011-01-02 2011-01-03 2011-01-04
001 B 2011-01-01 2011-01-02 2011-01-03 2011-01-04
001 C 2011-01-01 2011-01-02 2011-01-03 2011-01-04
001 D 2011-01-01 2011-01-02 2011-01-03 2011-01-04
001 E 2011-01-01 2011-01-02 2011-01-03 2011-01-04
001 F 2011-01-01 2011-01-02 2011-01-03 2011-01-04
001 G 2011-01-01 2011-01-02 2011-01-03 2011-01-04(7 行受影响)
*/
from tb1 a
left join (select * from tb2 where button='保存') b on a.id=b.id
left join (select * from tb2 where button='修改') c on a.id=c.id
left join (select * from tb2 where button='重复保存') d on a.id=d.id
left join (select * from tb2 where button='提交') e on a.id=e.id
create table tb1
(
id varchar(10),
no varchar(10)
)
INSERT INTO tb1
select
'001', 'A'
union select
'001', 'B'
union select
'001', 'C'
union select
'001', 'D'
union select
'001', 'E'
union select
'001', 'F'
union select
'001', 'G'create table tb2
(
id varchar(10),
button nvarchar(20),
date varchar(20)
)
insert into tb2
select
'001', '保存' ,'2011-1-1'
union select'001', '修改' ,'2011-1-2'
union select'001', '重复保存', '2011-1-3'
union select'001', '提交', '2011-1-4'
SELECT ID,NO
,MAX(CASE BUTTON WHEN '保存' THEN date END) '保存date'
,MAX(CASE BUTTON WHEN '修改' THEN date END) '修改date'
,MAX(CASE BUTTON WHEN '重复保存' THEN date END) '重复保存date'
,MAX(CASE BUTTON WHEN '提交' THEN date END) '提交date'
FROM(
SELECT tb1.*,tb2.BUTTON,tb2.DATE FROM tb1,tb2)T
GROUP BY ID,NO--------------------------------
ID NO 保存date 修改date 重复保存date 提交date
---------- ---------- -------------------- -------------------- -------------------- --------------------
001 A 2011-1-1 2011-1-2 2011-1-3 2011-1-4
001 B 2011-1-1 2011-1-2 2011-1-3 2011-1-4
001 C 2011-1-1 2011-1-2 2011-1-3 2011-1-4
001 D 2011-1-1 2011-1-2 2011-1-3 2011-1-4
001 E 2011-1-1 2011-1-2 2011-1-3 2011-1-4
001 F 2011-1-1 2011-1-2 2011-1-3 2011-1-4
001 G 2011-1-1 2011-1-2 2011-1-3 2011-1-4(7 行受影响)
SELECT ID,NO
,MAX(CASE BUTTON WHEN '保存' THEN date END) '保存date'
,MAX(CASE BUTTON WHEN '修改' THEN date END) '修改date'
,MAX(CASE BUTTON WHEN '重复保存' THEN date END) '重复保存date'
,MAX(CASE BUTTON WHEN '提交' THEN date END) '提交date'
FROM(
SELECT tb1.*,tb2.BUTTON,tb2.DATE FROM tb1,tb2 WHERE tb1.ID=tb2.ID)T
GROUP BY ID,NO
select a.id,no,max(case button when '保存' then date end) as 保存,
max(case button when '修改' then date end) as 修改,
max(case button when '重复保存' then date end) as 重复保存,
max(case button when '提交' then date end) 提交 from tb1 a,tb2 b where a.id=b.idgroup by a.id,no
declare @sql varchar(8000)
set @sql='select a.id,no'
select @sql = @sql+',max(case button when '''+button+''' then date else '''' end)['+ button +']'
from(select distinct button from tb2) as a
set @sql = @sql+'from tb1 a,tb2 b group by a.id,no'
exec(@sql)
SELECT ID,NO
,MAX(CASE BUTTON WHEN '保存' THEN date END) '保存date'
,MAX(CASE BUTTON WHEN '修改' THEN date END) '修改date'
,MAX(CASE BUTTON WHEN '重复保存' THEN date END) '重复保存date'
,MAX(CASE BUTTON WHEN '提交' THEN date END) '提交date'
FROM(
SELECT tb1.*,tb2.BUTTON,tb2.DATE FROM tb1,tb2 WHERE tb1.ID=tb2.ID)T
GROUP BY ID,NO