2015-02-24 38 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語句,但不能寫出來,因爲我不知道在這種情況下你的可能價值是什麼。