我将这个 case 语句附加到代码中。但它并没有像它应该的那样工作。它在(条约栏)中带来了“错误”,而不是指定的受尊重条约。我的想法是,它没有将日期识别为“日期”。谁能告诉我我做错了什么或如何将“日期”功能应用于案例陈述?谢谢!
set Reference_Org_Var = 'HII_STM';
set Load_Date_Var = current_date();
set Treaty_Var = ' ';
insert into PREMIUM_DB(Plan_Name, Member_ID,
"3x2_Term", Member_Policy_Effective_Date,
Reference_Org, Treaty, LoadDt)
select Plan_Name, Member_ID, '3x2_Term',
Member_Policy_Effective_Date,
FileRecdDate, $Reference_Org_Var,
case
when Member_Policy_Effective_Date <= '2017-02-28'
then $Treaty_Var = '2016 Treaty'
when Member_Policy_Effective_Date between '2017-03-01' and '2018-02-28'
then $Treaty_Var = '2017 Treaty'
when Member_Policy_Effective_Date between '2018-03-01' and '2018-09-30'
then $Treaty_Var = '2018a Treaty'
when Member_Policy_Effective_Date between '2018-10-01' and '2018-10-31'
then $Treaty_Var = '2018b Treaty'
else $Treaty_Var = ' '
end,
$Load_Date_Var
from HII_STM_PREM;
答案 0 :(得分:0)
您正在将您的条约列的值设置为相等检查的结果,但您似乎实际上只想要右侧的值,您可以通过将查询更改为使用 THEN
语句来实现到 THEN '2017 Treaty'
等(而不是 THEN $Treaty_Var = '2017 Treaty'
)
set Treaty_Var = ' ';
WITH HII_STM_PREM as (select $1 Member_Policy_Effective_Date from VALUES ('2017-02-20'),
('2018-02-28'),
('2017-03-01'),
('2018-03-01'),
('2018-09-30'),
('2018-10-01'),
('2018-10-31'))
select
case
when Member_Policy_Effective_Date <= '2017-02-28'
then $Treaty_Var = '2016 Treaty'
when Member_Policy_Effective_Date between '2017-03-01' and '2018-02-28'
then $Treaty_Var = '2017 Treaty'
when Member_Policy_Effective_Date between '2018-03-01' and '2018-09-30'
then $Treaty_Var = '2018a Treaty'
when Member_Policy_Effective_Date between '2018-10-01' and '2018-10-31'
then $Treaty_Var = '2018b Treaty'
else $Treaty_Var = ' '
end current_val,
case
when Member_Policy_Effective_Date <= '2017-02-28'
then '2016 Treaty'
when Member_Policy_Effective_Date between '2017-03-01' and '2018-02-28'
then '2017 Treaty'
when Member_Policy_Effective_Date between '2018-03-01' and '2018-09-30'
then '2018a Treaty'
when Member_Policy_Effective_Date between '2018-10-01' and '2018-10-31'
then '2018b Treaty'
else ' '
end expected_val
from HII_STM_PREM;
CURRENT_VAL EXPECTED_VAL
FALSE 2016 Treaty
FALSE 2017 Treaty
FALSE 2017 Treaty
FALSE 2018a Treaty
FALSE 2018a Treaty
FALSE 2018b Treaty
FALSE 2018b Treaty