询问SQL语句或方法

来源:百度知道 编辑:UC知道 时间:2024/09/19 16:32:46
a表结构
user pl
张三 1
李四 2
王五 3
b表结构
sqr user1 user2 LB LB2
1000 张三 李四 1 A
1200 张三 王五 1 B
1400 张三 李四,王五 2 A
1600 李四 王五 2 B

我想要的结果是
user 1+A 2+A 1+B 2+B
张三 1000 1400 1200
李四 1000 1400 1600
王五 1400 1200 1600
-------------------------------------------
我用下面语句
select user,sum(sqr) as sqr ,LB,LBJ1 from a,b where (instr(b.user1 ,a.user)>0 or instr(b.user2 ,a.user)>0) group by a.user,b.LB,b.LB1
-----------------------实现的效果是
user 2+B
张三 1000 1+A
张三 1400 2+A
张三 1200 1+B
李四 1000 1+A
李四 1400 2+A
李四 1600 2+B
王五 1400 2+A
王五 1200 1+B
王五 1600 2+B
--------------------------\
请问我要用什么语句或者什么方法实现我的预期效果?

分我要了,楼主,给你正确答案!
不过你那个b表好像有点问题,明明只有两个user,怎么冒出来三个。如果我没理解错,那就加个user3的字段。

select user,
case when user in (select user1,user2,user3 from b where lb=1 and lb2='A') then (select sqr from b where lb=1 and lb2='A') else null end [1+A],
case when user in (select user1,user2,user3 from b where lb=2 and lb2='A') then (select sqr from b where lb=2 and lb2='A') else null end [2+A],
case when user in (select user1,user2,user3 from b where lb=1 and lb2='B') then (select sqr from b where lb=1 and lb2='B') else null end [1+B],
case when user in (select user1,user2,user3 from b where lb=2 and lb2='B') then (select sqr from b where lb=2 and lb2='B') else null end [2+B]
from a

另外值得提一下的是,那个user是sqlserver里的关键字,建议最好不要用这个列名。不知道你是怎么通过的,我用这个列名在查询分析器里通不过去

select sum(case when LB+LB2='1+A' then sqr else 0 end )) as 1+A ,sum(case when LB+LB2='1+B' then sqr else 0 end )) as 1