我从另一个离开公司的SQL人那里获得了这段代码。我似乎无法弄清楚在查询的这一部分中究竟要做什么,它还在= LEFT(period,4)=1)
和其他点之间抛出错误
and (
case when (
case when (substring(FlowchartName,1,5)='HEDIS')
then SUBSTRING(FlowchartName,7,4)
else cast(20 as varchar(4)) + substring(FlowchartName,2,2)
end = LEFT(period,4)
) then
case when RIGHT(period,2) in (1,2,3,4,5,6)
then
case when ReportingType='RETROSPECTIVE'
then 1
else 0
end
else 0
end
when (
case when substring(FlowchartName,1,5)='HEDIS'
then SUBSTRING(FlowchartName,7,4)
else cast(20 as varchar(4)) + substring(FlowchartName,2,2)
end
) = LEFT(period,4)=1
) then
case when RIGHT(period,2) in (10,11,12)
then
case when ReportingType='PROSPECTIVE'
then 1
else 0
end
else 0
end
else 0
end ) = 1
)
答案 0 :(得分:0)
首先测试特定[FlowchartName]
的相关年份是否与[period]
中的年份相同(它假设年份只能从2000年开始)< / p>
它似乎正在进一步测试特定[FlowchartName]
它在尝试允许根据结果是'RETROSPECTIVE'
还是'PROSPECTIVE'
<返回/加入查询结果(您还没有提供上下文)时使用它/ p>
'RETROSPECTIVE'
结果在年份的最后两位数字为1到6时返回(如果此测试失败,我不会感到惊讶,因为它只提供1个字符串来测试一个2个字符的字符串)和列[ReportingType]='RETROSPECTIVE'
。我认为这里的意图是'RETROSPECTIVE'
属于2001年,2002年,2003年,或2004年,或2005年,或2006年
'PROSPECTIVE'
结果以与'RETROSPECTIVE'
相同的方式返回,稍有不同的是,[ReportingType]
列需要具有值'PROSPECTIVE'
和年份必须是2010年,或2011年,或2012年