当查询不到某列的数据时仍显示其它列数据
表t_Table
Name Date AA BB
设备一 2012-05-18 88 01
设备一 2012-05-17 99 25
设备二 2012-05-18 55 69
设备二 2012-05-17 33 58
设备三 2012-05-18 22 93
设备四 2012-05-18 55 21
设备五 2012-05-18 77 22
=====================================================
根据Date查询!
如果查询的是 2012-05-18 的数据
要求查询结果如下
Name AA BB
设备一 88 01
设备二 55 69
设备三 22 93
设备四 55 21
设备五 77 22
=====================================================
如果查询的是 2012-05-20 的数据
要求查询结果如下
Name AA BB
设备一 0 0
设备二 0 0
设备三 0 0
设备四 0 0
设备五 0 0
[解决办法]
select Name into tmp1 from t_Table
group by Name
select t.name,isnull(a.AA,0) aa,isnull(a.bb,0) bb
from tmp t left join t_table a on t.name = a.name
where a.date ='2012-05-12'
[解决办法]
- SQL code
select a.name,isnull(aa,0) as aa,isnull(bb,'0') as bbfrom(select distinct name from t_table) aleft join t_table b on a.name=b.name and b.date='2012-05-20'
[解决办法]
[解决办法]
- SQL code
--> 测试数据:[t_Table]if object_id('[t_Table]') is not null drop table [t_Table]create table [t_Table]([Name] varchar(6),[Date] datetime,[AA] int,[BB] varchar(2))insert [t_Table]select '设备一','2012-05-18',88,'01' union allselect '设备一','2012-05-17',99,'25' union allselect '设备二','2012-05-18',55,'69' union allselect '设备二','2012-05-17',33,'58' union allselect '设备三','2012-05-18',22,'93' union allselect '设备四','2012-05-18',55,'21' union allselect '设备五','2012-05-18',77,'22'--查询的是 2012-05-18 的数据select a.Name,isnull(b.AA,0) AA,ISNULL(b.BB,'0') BB from(select [Name] from [t_Table])aleft join (select * from [t_Table] where [Date]='2012-05-18')bon a.[Name]=b.[Name]/*Name AA BB-----------------设备一 88 01设备一 88 01设备二 55 69设备二 55 69设备三 22 93设备四 55 21设备五 77 22*/--查询的是2012-05-20的数据select a.Name,isnull(b.AA,0) AA,ISNULL(b.BB,'0') BB from(select [Name] from [t_Table])aleft join (select * from [t_Table] where [Date]='2012-05-20')bon a.[Name]=b.[Name]/*Name AA BB------------------设备一 0 0设备一 0 0设备二 0 0设备二 0 0设备三 0 0设备四 0 0设备五 0 0*/