如果在where后面加case when 判断?

孙小胖儿 2017-05-12 10:56:32
各位大神, 需求如下:

SELECT 类型,异动日期,操作时间,签约单位,所属公司,编号,姓名,一级部门,二级部门,三级部门,职位,入职日期,转正日期,离职日期,异动后一级部门,异动后二级部门,异动后三级部门,异动后职位 FROM HM_RYTRANS_BB
WHERE 异动日期>='2017-01-01' AND 异动日期<='2017-04-01' OR 操作时间>='2017-01-01' AND 操作时间<='2017-04-01' and b01_dept_code like '101%' ORDER BY 类型,所属公司,A0190


--- 需求
---1、异动日期不为空、操作时间为空 那么就按照异动日期筛选数据
---2、当操作日期不为空、异动时间为空 那么就按照操作时间筛选数据
---3、当异动日期和操作时间均不为空, 那么按照异动日期和操作时间筛选
...全文
1179 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
二月十六 版主 2017-05-12
  • 打赏
  • 举报
回复
试试这个
SELECT  类型 ,
        异动日期 ,
        操作时间 ,
        签约单位 ,
        所属公司 ,
        编号 ,
        姓名 ,
        一级部门 ,
        二级部门 ,
        三级部门 ,
        职位 ,
        入职日期 ,
        转正日期 ,
        离职日期 ,
        异动后一级部门 ,
        异动后二级部门 ,
        异动后三级部门 ,
        异动后职位
FROM    HM_RYTRANS_BB
WHERE   ( ( 异动日期 IS NULL
            OR 操作时间 IS NOT NULL
          )
          OR ( 异动日期 BETWEEN '2017-01-01' AND '2017-04-01' )
        )
        AND ( ( 操作时间 IS NULL
                OR 异动日期 IS NOT NULL
              )
              OR ( 操作时间 BETWEEN '2017-01-01' AND '2017-04-01' )
            )
        AND ( ( 操作时间 IS NULL
                OR 异动日期 IS NULL
              )
              OR ( 操作时间 BETWEEN '2017-01-01' AND '2017-04-01'
                   AND 异动日期 BETWEEN '2017-01-01' AND '2017-04-01'
                 )
            )
ORDER BY 类型 ,
        所属公司 ,
        A0190
  • 打赏
  • 举报
回复

CASE WHEN YDRQ IS NOT NULL AND CZRQ IS NULL THEN YDRQ 
 WHEN  YDRQ IS NULL AND CZRQ IS NOT NULL  THEN   CZRQ
 WHEN   YDRQ IS NULL AND CZRQ IS NOT NULL  THEN  你这个 和怎么写?
孙小胖儿 2017-05-12
  • 打赏
  • 举报
回复
SELECT 类型,异动日期,操作时间,签约单位,所属公司,A0190,A0101,一级部门,二级部门,三级部门,职位,入职日期,转正日期,离职日期,异动后一级部门,异动后二级部门,异动后三级部门,异动后职位 FROM HM_RYTRANS_BB WHERE ((异动日期 is null or 操作时间 is not null) or(异动日期 >= '2017-01-04' and 异动日期<='2017-04-01')) and ((异动日期 is not null or 操作时间 is null)or (操作时间 >= '2017-02-04' and 操作时间<='2017-04-01')) and ((异动日期 is not null or 操作时间 is not null)or (异动日期 >= '2017-01-04' and 异动日期<='2017-04-01' and 操作时间 >= '2017-02-04' and 操作时间<='2017-04-01')) and b01_dept_code like '101%' ORDER BY 类型,所属公司,A0190 最后改为这个就可以了。 谢谢您给的思路。 如果按照BETWEEN  这个去判断的话。 一直提示日期有误。

34,594

社区成员

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

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