记录一下工作中SQL Server数据库遇到的问题

解决查询同步人员信息,使用 case when then解决多IF判断问题

select LOCATION,
       cert_type,
       WEIXIN,
       MARRIAGE,
       RECORD_WAGE,
       SPECIALTY,
       EMAIL,
       WORKING_TIME,
       REPORTER,
       NATION,
       GENDER,
       TELPHONE,
       OFFICENUMBER,
       post_type,
       ID,
       BIRTHDAY,
       AGE,
       POSTALCODE,
       QQ,
       WORK_STARTING_DATE,
       WEIBO,
       POSTADDRESS,
       POLITICS,
       HOBBY,
       MSN,
       UPDATE_TIME,
       BIRTHPLACE,
       EXT_ATTR_4,
       EXT_ATTR_5,
       EXT_ATTR_2,
       EXT_ATTR_3,
       ADDRESS,
       yearsOFservice,
       EXT_ATTR_1,
       person_class,
       DEGREE,
       USED_NAME,
       BLOG,
       ID_CARD,
       WEBSITE,
       case
           when EXT_ATTR_2 is null then EXT_ATTR_2
           when EXT_ATTR_2 = CONVERT(VARCHAR (10), DATEADD(MONTH, datediff(MONTH, 0, EXT_ATTR_2), 0), 120) then CONVERT(
                   VARCHAR (10), DATEADD(MONTH, datediff(MONTH, 0, EXT_ATTR_2), 0), 120)
           else CONVERT(VARCHAR (10), DATEADD(MONTH, DATEDIFF(MONTH, 0, EXT_ATTR_2) + 1, 0), 120) end as annuity_pay
from mid_org_person_base
where id = '${code}';

select cert_type,
       EMAIL,
       GENDER,
       TELPHONE,
       OFFICENUMBER,
       post_type,
       ID,
       EXT_ATTR_4,
       EXT_ATTR_5,
       EXT_ATTR_2,
       case
           when EXT_ATTR_2 is null then EXT_ATTR_2
           when EXT_ATTR_2 = CONVERT(VARCHAR (10), DATEADD(MONTH, datediff(MONTH, 0,EXT_ATTR_2), 0), 120) then CONVERT(
                   VARCHAR (10), DATEADD(MONTH, datediff(MONTH, 0, EXT_ATTR_2), 0), 120)
           else CONVERT(VARCHAR (10), DATEADD(MONTH, DATEDIFF(MONTH, 0, EXT_ATTR_2) + 1, 0), 120)
           end as rizhiDate,
       EXT_ATTR_3,
       ADDRESS,
       EXT_ATTR_1,
       person_class,
       ID_CARD
from mid_org_person_base
where id = '${code}';

 case
           when EXT_ATTR_1 is null then EXT_ATTR_1
           when EXT_ATTR_1 = (convert(char(10), dateadd(month, datediff(month, 0, EXT_ATTR_1), 0), 126)) then (convert(
                   char(10), dateadd(month, datediff(month, 0, EXT_ATTR_1), 0)))
           else convert(char(10), DATEADD(MONTH, DATEDIFF(MONTH, 0, EXT_ATTR_1) + 1, 0), 126)
           end               as rizhiDate,

select
case
    when 范围条件 then 产生的结果
    when 范围条件  then 产生的结果
    else 不是以上范围产生的结果
end
from 表名

select cert_type,
       EMAIL,
       GENDER,
       TELPHONE,
       OFFICENUMBER,
       post_type,
       ID,
       EXT_ATTR_4,
       EXT_ATTR_5,
       EXT_ATTR_2,
#        ISNULL(IF(EXT_ATTR_2 = convert(char(10), dateadd(month, datediff(month, 0, getdate()), 0), 126),
#                  convert(char(10), dateadd(month, datediff(month, 0, getdate()), 0), 126),
#                  convert(char(10), DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()) + 1, 0), 126)), "") as extattr,
       IF(ISNULL(EXT_ATTR_2,0))
       EXT_ATTR_3,
       ADDRESS,
       EXT_ATTR_1,
       person_class,
       ID_CARD
from mid_org_person_base
where id = '${code}';

select isnull(EXT_ATTR_2,GETDATE())
from mid_org_person_base
where id = '${code}';

select if(2>1,1,0) from mid_org_person_base where id = '${code}';

select DATE_ADD(curdate()-day(curdate())+1,interval 1 month); -- 获取下个月的第一天
select DATE_ADD(curdate(),interval -day(curdate())+1 day);   -- 获取本月第一天

ifnull(if(EXT_ATTR_2 = (select DATE_ADD(curdate(), interval -day(curdate()) + 1 day)),
          (select DATE_ADD(curdate(), interval -day(curdate()) + 1 day)),
          (select DATE_ADD(curdate() - day(curdate()) + 1, interval 1 month))),null),

select DATEADD(MM,DATEDIFF(MM,0,GETDATE()),0) AS 本月第一日
,DATEADD(DAY,1,DATEADD(MM,DATEDIFF(MM,0,GETDATE())+1,0)) 本月最后一日

select CONVERT(VARCHAR (10), DATEADD(MONTH, DATEDIFF(MONTH, 0,'2022-12-02'), 0), 120) AS 本月第一日
,CONVERT(VARCHAR(10),DATEADD(MONTH, DATEDIFF(MONTH, 0, '2022-12-02')+1, 0),120) 下月第一日

 convert(char(10),getdate(),126)

--本月第一天
select dateadd(month, datediff(month, 0, getdate()), 0);
--本月最后一天
select dateadd(month, datediff(month, -1, getdate()), -1);
--上月第一天
select DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE())-1, 0)
--上月最后一天
select DATEADD(MONTH, DATEDIFF(MONTH, -1, GETDATE())-1, -1)

posted @ 2023-03-07 19:41  我也有梦想呀  阅读(17)  评论(0)    收藏  举报