[英]Pass multiple value in where clause in SQL Server
SELECT
"dbo"."ClaimDataFormat"."AGE",
"dbo"."ClaimDataFormat"."RELATION",
"dbo"."ClaimDataFormat"."NAME",
"dbo"."ClaimDataFormat"."ENTRY_DATE",
"dbo"."ClaimDataFormat"."CLAIM_AMT",
CASE
WHEN "dbo"."ClaimDataFormat"."Gender" = 'F'
THEN 'FEMALE'
ELSE 'MALE'
END AS GENDER,
"dbo"."ClaimDataFormat"."STATUS",
"dbo"."ClaimDataFormat"."APPROVED_AMT"
FROM
"dbo"."ClaimDataFormat"
WHERE "dbo"."ClaimDataFormat"."AGE" = CASE
WHEN ${TimeGran} = '0-10'
THEN 0
WHEN ${TimeGran} = '0-10'
THEN 1
WHEN ${TimeGran} = '0-10'
THEN 2
WHEN ${TimeGran} = '0-10'
THEN 3
WHEN ${TimeGran} = '0-10'
THEN 4
WHEN ${TimeGran} = '0-10'
THEN 5
WHEN ${TimeGran} = '0-10'
THEN 6
WHEN ${TimeGran} = '0-10'
THEN 7
WHEN ${TimeGran} = '0-10'
THEN 8
WHEN ${TimeGran} = '0-10'
THEN 9
WHEN ${TimeGran} = '0-10'
THEN 10
WHEN ${TimeGran} = '11-20'
THEN 11
WHEN ${TimeGran} = '11-20'
THEN 12
WHEN ${TimeGran} = '11-20'
THEN 13
WHEN ${TimeGran} = '11-20'
THEN 14
WHEN ${TimeGran} = '11-20'
THEN 15
WHEN ${TimeGran} = '11-20'
THEN 16
WHEN ${TimeGran} = '11-20'
THEN 17
WHEN ${TimeGran} = '11-20'
THEN 18
WHEN ${TimeGran} = '11-20'
THEN 19
WHEN ${TimeGran} = '11-20'
THEN 20
ELSE 21
END
if the age band is 0-10 the all values between 0 and 10 must be reflected 如果年龄段是0-10,则必须反映0到10之间的所有值
To me it looks like that you need something like this: 在我看来,您需要这样的东西:
WHERE
AGE >= convert(int, left(@timeGrain, charindex ('-', @timeGrain) - 1)) and
AGE <= convert(int, substring(@timeGrain, charindex ('-', @timeGrain) + 1, 9999))
This will split the timegrain from - and use those as upper / lower limit. 这会将时间间隔从-分开,并将其用作上限/下限。 For the else part, you probably need to have some kind of OR -clause, but can't write it since I have no idea what your possible value is in that case. 对于其他部分,您可能需要具有OR子句,但由于我不知道在这种情况下可能的价值,因此无法编写。
Try this instead 试试这个
SELECT dbo.ClaimDataFormat.AGE,
dbo.ClaimDataFormat.RELATION,
dbo.ClaimDataFormat.NAME,
dbo.ClaimDataFormat.ENTRY_DATE,
dbo.ClaimDataFormat.CLAIM_AMT,
CASE
WHEN dbo.ClaimDataFormat.Gender = 'F' THEN 'FEMALE'
ELSE 'MALE'
END AS GENDER,
dbo.ClaimDataFormat.STATUS,
dbo.ClaimDataFormat.APPROVED_AMT
FROM dbo.ClaimDataFormat
WHERE ( dbo.ClaimDataFormat.AGE BETWEEN 0 AND 10
AND TimeGran = '0-10' )
OR ( dbo.ClaimDataFormat.AGE BETWEEN 11 AND 20
AND TimeGran = '11-20' )
OR ( dbo.ClaimDataFormat.AGE = 21
AND TimeGran NOT IN ( '0-10', '11-20' ) )
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.