A表
字段1 字段2
A1 aaa
A2 bbbB表
字段1 字段2 字段3
A1 测试1 1000
A2 测试2 500
想得出的结果A1 测试1 1000
A2 测试2 0
A1 测试2 0
A2 测试2 500
字段1 字段2
A1 aaa
A2 bbbB表
字段1 字段2 字段3
A1 测试1 1000
A2 测试2 500
想得出的结果A1 测试1 1000
A2 测试2 0
A1 测试2 0
A2 测试2 500
解决方案 »
- SQL2005,SQL2008使用临时表@table 的效率好低!
- 如何获得数据表的21-31条数据?
- 这个group by 应该怎么写
- 求一sql语句(将某字段的值为空时转换成固定的值)在线等!
- 如何取最低的两个价格?
- 鸟哥初问+100:关于SQL Server2005使用UDL文件进行数据源连接的问题
- count(*)跟count(ID)在性能上有没有差别?
- SQL SERVER跨服务器连接能够用到索引吗?
- replace函数是否可使用通配符
- 求sql语句.能实现删除留言时,就能通过留言回复关系表删除对留言的回复,并且删除留言回复关系表中的数据!
- 求SQL Server大神帮忙~
- sqlserver导出excel(邹建版)报错,求解
A1 测试1 1000
A2 测试1 0
A1 测试2 0
A2 测试2 500
declare @A表 table (字段1 varchar(2),字段2 varchar(3))
insert into @A表
select 'A1','aaa' union all
select 'A2','bbb'declare @B表 table (字段1 varchar(2),字段2 varchar(5),字段3 int)
insert into @B表
select 'A1','测试1',1000 union all
select 'A2','测试2',500--是不是这个意思?
select a.字段1,b.字段2,
case when a.字段2='aaa' then 字段3 else 0 end as 字段3
from @A表 a cross join @B表 b/*
字段1 字段2 字段3
---- ----- -----------
A1 测试1 1000
A2 测试1 0
A1 测试2 500
A2 测试2 0
*/
union
select b.字段1, b.字段2, (case b.字段1 when 'A2' then b.字段3 else 0) from b left join a where a.字段1=b.字段1
select a.字段1,b.字段2,
case when a.字段2='aaa' then 字段3 else 0 end as 字段3
from @A表 a cross join @B表 b这里的case when a.字段2='aaa'是不固定的,
case when a.字段1=b.字段1 then 字段3 else 0 end as 字段3
from @A表 a cross join @B表 b