3个表关联的数据。解决思路
3个表关联的数据。
------解决方案--------------------
试试这个
------解决方案--------------------
--a表.主数据表头
BINDID SJ
1001 2014-02-19 17:23:02.0
1002 2014-02-18 17:22:35.0
--b表.主数据数据
BINDID wl AQ
---------------------
1001 WL1 Y
1001 WL2 Y
1001 WL3
1002 WL1 N
1002 WL2 N
1002 WL3
1002 WL4 Y
1002 WL5 Y
--两组BINDID不同的数据:字段wl物料有重复的话将最新时间对应的数据查询出,
--想要的结果为:
wl AQ
----------
WL1 Y
WL2 Y
WL3
WL4 Y
WL5 Y
--然后把上面的结果和c表:根据物料wl进行关联
--c表.送检表
wl name
--------------------
WL1 aa
WL2 bb
WL3 cc
WL4 dd
WL5 ee
--最终的结果:
wl name AQ
--------------------
WL1 aa Y
WL2 bb Y
WL3 cc
WL4 dd Y
WL5 ee Y
---
--最终的sql改怎么写?
------解决方案--------------------
试试这个
--drop table A,B,C
create table a(BINDID int, SJ datetime)
insert into a
select 1001 ,'2014-02-19 17:23:02.0' union all
select 1002 ,'2014-02-18 17:22:35.0'
create table b(BINDID int,wl varchar(10),AQ varchar(10))
insert into B
select 1001 ,'WL1', 'Y' union all
select 1001 ,'WL2', 'Y' union all
select 1001 ,'WL3', null union all
select 1002 ,'WL1', 'N' union all
select 1002 ,'WL2', 'N' union all
select 1002 ,'WL3', null union all
select 1002 ,'WL4', 'Y' union all
select 1002 ,'WL5', 'Y'
create table c(wl varchar(10),name varchar(10))
insert into c
select 'WL1', 'aa' union all
select 'WL2', 'bb' union all
select 'WL3', 'cc' union all
select 'WL4', 'dd' union all
select 'WL5', 'ee'
go
select t.wl,c.name,t.AQ
from
(
select b.BINDID,b.wl,b.AQ,
ROW_NUMBER() over(partition by b.wl order by a.sj desc) rownum
from b
inner join a
on a.BINDID = b.BINDID
)t
inner join c
on t.wl = c.wl
where t.rownum = 1
/*
wl name AQ
WL1 aa Y
WL2 bb Y
WL3 cc NULL
WL4 dd Y
WL5 ee Y
*/
------解决方案--------------------