请教sql的写法。(100分)

  • 主题发起人 主题发起人 fstao
  • 开始时间 开始时间
F

fstao

Unregistered / Unconfirmed
GUEST, unregistred user!
假如表dbo.T1(主表)和dbo.T2从表:
dbo.T1
id lx
1 晚接
2 早送
3 中间

dbo.T2
id no price
1 2 2
1 3 3
1 4 4
2 3 5
2 4 4
3 4 1

另一表dbo.T3的数据为:
no price
2 4
3 5
4 6


我想用select语句,得到以下的结果(price1为lx='晚接'or lx='早送'的price,price2为

lx='中间'的price,price3为dbo.T3的price):
no price1 price2 price3
2 2 4
3 8 5
4 8 1 6

第一行数据:lx='晚接',no=2则price=2,而lx='早送'的no=2时的price为空,所以

price1=2+0=2,
dbo.t3的no=2则price3=4。
第二行数据:lx='晚接'的no=3的price=3,lx='早送'的no=3的price=5,则price1=3+5=8,
dbo.t3的no=3,则price3=5。
第三行数据:lx='晚接',no=4的pirce=4,lx='早送'的no=4的price=4,则price1=4+4=8,
dbo.t3的no=4,则price3=6。lx='中间'的no=6的price=1,所以price2=1。

请问如何用select语句来写?数据库为sql server7。
 
老兄请把问题讲清楚点,我看了三遍都没看明白!
 
试试这句——
select a.*,b.price price3 from
(select no,sum(case when lx in ('晚接','早送') then price end) price1,
sum(case lx when '中间' then price end) price2
from (select t1.lx,t2.no,t2.price from t1 right join t2 on t1.id=t2.id) a
group by no) a
join t3 b on a.no=b.no
 
我也没弄明白! :(
 
呵呵,肯定是在考我们的语文水平。 :)
 
接受答案了.
 
后退
顶部