2015-02-24 2 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 должны быть отраженыPass кратного значения в котором пункт в SQL Server

+0

что именно у спрашивать о? – tod

+0

это ошибка? – varsha

+1

Пожалуйста, просто не показывайте, как вы пытались показать, чего вы хотите достичь. Добавьте примерные данные с ожидаемым результатом, которые помогут нам понять, что вы хотите. –

ответ

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 .... в коде ur, если я выбираю опцию 0-10, она дает мне результат 21. может снова перепроверить ...... – xyz

+0

@IndrajitChowdhury - обновлена ​​регистрация сейчас –

+0

спасибо Mr NoDisplayName ........ я добавил немного своего мозга (немного), и я получил o/p ... ..... – xyz

1

Для меня это выглядит как что вам нужно что-то вроде этого:

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

Это разделит период времени от - и использует их как верхний/нижний предел. Для части else вы, вероятно, должны иметь какой-то OR -clause, но не можете писать, поскольку я понятия не имею, какова ваша возможная ценность в этом случае.

Смежные вопросы