请教一个查询语句的写法

wedding123 2010-02-25 09:48:44
查询一批2009年12月的数据

SELECT A,B,C,DATE
FROM table
WHERE YEAR(DATE)=2009 AND MONTH(DATE)=12 AND ......


要求是TABLE中字段status如果是1,则提取当月数据,如果是2,就提取2009年12月前的最后一个status是1的数据
...全文
97 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Dingnifei123 2010-02-25
  • 打赏
  • 举报
回复
看帮助文档啊,那上面说的清楚,而且例子比较多,
百年树人 2010-02-25
  • 打赏
  • 举报
回复
引用 6 楼 wedding123 的回复:
嗯,还有个问题,一个datetime参数,如'2009-12-25 14:20:00' ,如何将其传唤成
'2009-12-1 00:00:00' ?
SELECT CAST(CONVERT(VARCHAR(7),'2009-12-25 14:20:00',120)+'-01' AS DATETIME)

/**

------------------------------------------------------
2009-12-01 00:00:00.000

(所影响的行数为 1 行)
**/
老黎 2010-02-25
  • 打赏
  • 举报
回复
眼大望过界
引用 3 楼 beirut 的回复:
引用 2 楼 kerafan 的回复:exists可以加个else的,学习了。引用 1 楼 beirut 的回复:SQL codeifexists(select1from tbwhereYEAR(DATE)=2009ANDMONTH(DATE)=12AND status=1)SELECT A,B,C,DATEFROMtableWHEREYEAR(DATE)=2009ANDMONTH(DATE)=12elseSELECTtop1 A,B,C,DATEFROMtableWHERE date<'2009-12-01?-
是 if ....else.......
wedding123 2010-02-25
  • 打赏
  • 举报
回复
即取其当月1日的零点零分?
wedding123 2010-02-25
  • 打赏
  • 举报
回复
嗯,还有个问题,一个datetime参数,如'2009-12-25 14:20:00' ,如何将其传唤成
'2009-12-1 00:00:00' ?
黄_瓜 2010-02-25
  • 打赏
  • 举报
回复
引用 4 楼 wedding123 的回复:
用SELECT A,B,C,DATE =
case status
  when 1 date
  when 2 select ...
where ....

这样可以吗?

不可以,这少我写不出来这样的case when
wedding123 2010-02-25
  • 打赏
  • 举报
回复
用SELECT A,B,C,DATE =
case status
when 1 date
when 2 select ...
where ....

这样可以吗?
黄_瓜 2010-02-25
  • 打赏
  • 举报
回复
引用 2 楼 kerafan 的回复:
exists可以加个else的,学习了。
引用 1 楼 beirut 的回复:SQL codeifexists(select1from tbwhereYEAR(DATE)=2009ANDMONTH(DATE)=12AND status=1)SELECT A,B,C,DATEFROMtableWHEREYEAR(DATE)=2009ANDMONTH(DATE)=12elseSELECTtop1 A,B,C,DATEFROMtableWHERE date<'2009-12-01?-

是 if ....else.......
老黎 2010-02-25
  • 打赏
  • 举报
回复
exists可以加个else的,学习了。
引用 1 楼 beirut 的回复:
SQL codeifexists(select1from tbwhereYEAR(DATE)=2009ANDMONTH(DATE)=12AND status=1)SELECT A,B,C,DATEFROMtableWHEREYEAR(DATE)=2009ANDMONTH(DATE)=12elseSELECTtop1 A,B,C,DATEFROMtableWHERE date<'2009-12-01?-
黄_瓜 2010-02-25
  • 打赏
  • 举报
回复
if exists(select 1 from tb where YEAR(DATE)=2009 AND MONTH(DATE)=12 AND status=1)
SELECT A,B,C,DATE FROM table WHERE YEAR(DATE)=2009 AND MONTH(DATE)=12
else
SELECT top 1 A,B,C,DATE FROM table WHERE date<'2009-12-01' order by date dese

34,590

社区成员

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

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