求一条sql语句,请帮忙

gsk99 2006-07-22 06:07:31
我希望查询一些数据,要求是这样的:
我查询的条件是根据日期(DTime)及类型(Type)来查询的,表名为XX
类型Type包括A和B
我希望查询到的结果是:
当DTime=查询时间时,我对于Type没有要求,即查出这天Type为A和B的所有数据,对于DTime<查询时间时,我希望查出所有Type为B的的数据,A的数据不显示。我希望用一条Sql语句来实现

换个说法:我希望查询小于等于<='2006-01-31'的数据,对于时间='2006-01-31'的数据,我要查询的Type没有限制,但是对于时间<'2006-01-31'的数据,我只要查询出Type为B的数据。

请高手指点
...全文
191 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
gsk99 2006-07-23
  • 打赏
  • 举报
回复
declare @xx table(dtime datetime,type varchar(10))
insert @xx
select '2006-01-31','A' union all
select '2006-01-31','B' union all
select '2006-01-30','A' union all
select '2006-01-30','B' union all
select '2006-01-30','A' union all
select '2006-01-30','B' union all
select '2006-01-29','A' union all
select '2006-01-29','B' union all
select '2006-01-29','A' union all
select '2006-01-29','B'
----查询
declare @dt datetime
set @dt = '2006-01-31'
select * from @xx where dtime < @dt and type = 'B'
union all
select * from @xx where datediff(dd,dtime,@dt) = 0
tianxingzh 2006-07-22
  • 打赏
  • 举报
回复
斯蒂芬
hellowork 2006-07-22
  • 打赏
  • 举报
回复
----创建测试数据
declare @xx table(dtime datetime,type varchar(10))
insert @xx
select '2006-01-31','A' union all
select '2006-01-31','B' union all
select '2006-01-30','A' union all
select '2006-01-30','B' union all
select '2006-01-30','A' union all
select '2006-01-30','B'
----查询
declare @dt datetime
set @dt = '2006-01-31'
select * from @xx where dtime < @dt
union all
select * from @xx where datediff(dd,dtime,@dt) = 0 and type = 'B'
Snoworld 2006-07-22
  • 打赏
  • 举报
回复
SELECT * FROM TB WHERE DTIME<'2006-01-31' AND TYPE='B'
UNION
SELECT * FROM TB WHERE DTIME='2006-01-31'

34,576

社区成员

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

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