SQL 使用带有日期函数的案例

问题描述 投票:0回答:2

我正在尝试使用日期案例在 SSIS 中向后运行 1 个月的查询,即 如果本月是 1 月,则必须显示去年 12 月的数据,并且 如果月份是 2 月至 12 月,则必须显示上个月的数据。 运行查询后,它显示关于所附图像的语法不正确的错误近一个月。有人可以为我提供帮助吗?谢谢你的优势。

Select distinct
a.POLICY_NO,c.CLAIM_NO,c.ENTRY_DATE,c.LOSS_DATE,c.LOSS_TIME,c.LOSS_DESC_CODE,c.LOSS_DESCRIPTION,c.CLAIM_STATUS,c.CLAIM_TYPE,c.PERSON_ENTRY_CODE,
(select p.person_full_name from center_setup.dbo.setup_person_name_master p where p.person_short_name = c.person_entry_code) as Person_Name,
c.loss_place_name
from
(select cm.policy_no,COUNT(cm1.claim_no) as Count_,cm.LOSS_DATE, 
case
   when
   month(cm.ENTRY_DATE) = '01' then DATEADD(year, -1, cm.ENTRY_DATE)
   month(cm.ENTRY_DATE) >= '02' AND year(cm.ENTRY_DATE)=YEAR(GETDATE()) then DATEADD(month, -1, cm.ENTRY_DATE) 
end
,cm.LOSS_DESC_CODE
from cosl_master cm inner join cosl_master cm1 on cm.POLICY_NO = cm1.POLICY_NO and cm.loss_date =cm1.loss_date and cm.loss_desc_code = cm1.LOSS_DESC_CODE and cm1.CLAIM_STATUS <> 'I' --and cm.LOSS_TIME = cm1.LOSS_TIME
where cm.claim_status in ('O','R') and cm.CLAIM_STATUS <> 'I'
group by cm.claim_no,cm.policy_no,cm.LOSS_DATE,cm.ENTRY_DATE ,cm.LOSS_DESC_CODE
having COUNT(cm1.claim_no) > 1) A left join COSL_MASTER c on A.POLICY_NO = c.POLICY_NO and c.CLAIM_STATUS <> 'I' and a.LOSS_DATE = c.LOSS_DATE and c.LOSS_DESC_CODE = a.LOSS_DESC_CODE
order by a.policy_no asc
sql dateadd getdate
2个回答
0
投票

使用 CASE 有两种不同的方法,因此您只需要了解正确的语法,具体取决于您将如何进行 CASE 比较。 (在您的错误的特定情况下,您的语法不太正确)

任一(一个值的简单比较):

SELECT CASE month(cm.EntryDate)
    WHEN 1 THEN 'something'
    WHEN 2 THEN 'something else'
    WHEN 3 THEN 'another different thing'
END

或(不同比较条件)

SELECT CASE
    WHEN month(cm.EntryDate) = 1 THEN 'this action'
    WHEN month(cm.EntryDate) >= 2 AND year(cm.EntryDate) = year(getdate()) THEN 'a different action'
END

0
投票

您错过了第二个测试用例的 WHEN 关键字。

case
   when month(cm.ENTRY_DATE) = '01' then DATEADD(year, -1, cm.ENTRY_DATE)
   when month(cm.ENTRY_DATE) >= '02' AND year(cm.ENTRY_DATE)=YEAR(GETDATE()) then DATEADD(month, -1, cm.ENTRY_DATE) 
end
© www.soinside.com 2019 - 2024. All rights reserved.