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

zhulei2008 2012-05-18 11:34:11
表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

...全文
143 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复

--> 测试数据:[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 all
select '设备一','2012-05-17',99,'25' union all
select '设备二','2012-05-18',55,'69' union all
select '设备二','2012-05-17',33,'58' union all
select '设备三','2012-05-18',22,'93' union all
select '设备四','2012-05-18',55,'21' union all
select '设备五','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])a
left join (
select * from [t_Table] where [Date]='2012-05-18')b
on 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])a
left join (
select * from [t_Table] where [Date]='2012-05-20')b
on a.[Name]=b.[Name]

/*
Name AA BB
------------------
设备一 0 0
设备一 0 0
设备二 0 0
设备二 0 0
设备三 0 0
设备四 0 0
设备五 0 0
*/
Felixzhaowenzhong 2012-05-18
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
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'
[/Quote]
++
百年树人 2012-05-18
  • 打赏
  • 举报
回复
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'
fengerfei2000 2012-05-18
  • 打赏
  • 举报
回复

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'
就是要流量 啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊大家多给评论 点赞 关注啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊

34,587

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧