2015-02-24 47 views
-1
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 

如果年龄段为0-10 0和10之间的所有值必须反映在SQL Server中第

+0

究竟是U问什么? – tod 2015-02-24 05:42:18

+0

它给出了任何错误? – varsha 2015-02-24 05:42:23

+1

请不要显示你如何尝试也显示你想要实现的。添加一些预期输出的示例数据,这将有助于我们理解您想要的内容。 – 2015-02-24 05:43:32

回答

1

试试这个

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')) 
+0

感谢您的回复... bt仍然有一些问题..... TimeGran是一个I/P变量....在我的代码中,如果我选择0-10选项,它会给我21的结果。你可以重新检查一次...... – xyz 2015-02-24 06:12:30

+0

@IndrajitChowdhury - 更新检查现在 – 2015-02-24 06:22:27

+0

谢谢先生NoDisplayName ........我添加了一些我的大脑(一点),我得到了O/P ... ..... – xyz 2015-02-24 06:26:33

1

对我来说,它看起来像你需要像这样传递多个值:

WHERE 
    AGE >= convert(int, left(@timeGrain, charindex ('-', @timeGrain) - 1)) and 
    AGE <= convert(int, substring(@timeGrain, charindex ('-', @timeGrain) + 1, 9999)) 

这将从时间分割 - 并使用那些作为上限/下限。对于其他部分,你可能需要有某种OR语句,但不能写出来,因为我不知道在这种情况下你的可能价值是什么。