首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

当查询不到某列的数据时仍显示其它列数据解决方案

2012-06-06 
当查询不到某列的数据时仍显示其它列数据表t_TableNameDateAABB设备一2012-05-188801设备一2012-05-179925

当查询不到某列的数据时仍显示其它列数据
表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

select a.name,isnull(aa,0) as aa,isnull(bb,'0') as bb
from
(select distinct name from t_table) a
left 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*/ 

热点排行