2011-09-13 7 views
0

同じSelect文の正確なフィールドの値をどのように複製できますか?私が持っているものSQLで値getを複製するSelect

SELECT 
    FIELD1, 
    FIELD2, 
    CASE WHEN FIELD3 <> FIELD4 
    THEN CASE WHEN SUBSTRING(FIELD10,1,3) = FIELD5 
    THEN (FIELD1 * FIELD3) + FIELD4 
    ELSE (FIELD1/FIELD3) + FIELD4 
    END 
    END AS CUSTOM_FIELD1, 
-- does the same CASE only to set it to another field. 
-- i don't want to make the same case again, I want it to be smarter and use the same value as CUSTOM_FIELD1 without needing to calculate again. 
    CASE WHEN FIELD3 <> FIELD4 
    THEN CASE WHEN SUBSTRING(FIELD10,1,3) = FIELD5 
    THEN (FIELD1 * FIELD3) + FIELD4 
    ELSE (FIELD1/FIELD3) + FIELD4 
    END 
    END AS CUSTOM_FIELD2 

私はこのコードは賢くきれいにする方法がある賭け、私は方法がわかりません。

答えて

3
SELECT 
    FIELD1, 
    FIELD2, 
    CUSTOM_FIELD1, 
    CUSTOM_FIELD1 AS CUSTOM_FIELD2 
    FROM 
    (
    SELECT 
     FIELD1, 
     FIELD2, 
     CASE WHEN FIELD3 <> FIELD4 
     THEN CASE WHEN SUBSTRING(FIELD10,1,3) = FIELD5 
     THEN (FIELD1 * FIELD3) + FIELD4 
     ELSE (FIELD1/FIELD3) + FIELD4 
     END 
     END AS CUSTOM_FIELD1 
    FROM TABLE 
) AS SUB 
+0

私は実際のSQLでこれを実装しようとすると、それぞれの結果が2回になります。私は非常に小さなSQLであなたのソリューションを試して、それが働いた、私はなぜ私の上で動作しないのか分からない。 – astro11

+0

DISTINCTを内側のSELECTに追加します。それ以外の場合は、実行しているクエリ全体を投稿できますか? – Wil