2011-09-30 105 views
-1

我喜歡從同一列中提取MIN和MAX值。由於我使用Group By,所以我必須使用min和max。如果我只是用整列,它給我說,你必須使用同組聚合函數通過正確的MIN,MAX和CASE語句

我該怎麼辦呢

值a = MAX(VALUEB)+ MIN(VALUEB)

錯誤什麼纔是正確的語法?

有人嗎?

和第二個問題是

我怎麼能使用2 case語句像上面給了我2列,而不是使用2 case語句中的情況是這樣

select 

ValueA = Case ValueC 
     when ValueB then ValueC 
     else '' 
     End 
     Case ValueD 
     when ValueE is blank then ValueD is also blank 
     END 

From TableA 

,我想1列 加第二種情況聲明我只寫了我想要的算法

我該如何解決這個問題?

+1

「我喜歡從同一列中提取MIN和MAX值。」那麼,我喜歡貓 –

+3

請發佈一些示例數據,你想得到的輸出,以及迄今爲止嘗試過的**精確** SQL,這是行不通的。否則,這裏的任何人都很難幫助你。 –

+0

對於第二個問題,「CASE ... END,CASE ... END」,你得到2列。一個'CASE ... END',你會得到一列。 –

回答

1

你的意思是這個?:

SELECT 
    MAX(ValueB) + MIN(ValueB) AS ValueA 
FROM 
    tableX 
GROUP BY 
    columnX 
+0

是的,但它不起作用。我可以使用ValueB,因爲這是我想要的,但因爲我使用Group By,它給我錯誤,我不得不使用聚合函數。我可以用別的東西替換組嗎? – user680865

+1

請發佈您產生該錯誤的代碼。你可以編輯你的問題。 –

0

在由ü要分組SELECT子句添加列名。我認爲它的工作原理,並沒有給出錯誤

select max(valueB)+min(ValueB)as valueB,columnX from tbl group by columnX 
0

問題1: by子句取決於組。請粘貼您使用的實際代碼。 如果您希望每個列的每個值爲B,然後將其添加到您的組中,即 group by columnX, ValueB 或者如果您只是想每個ValueB一次。然後 SELECT DISTINCT ValueB from tableX

問題2: 很混亂的描述。舉例輸入和輸出數據。 我最好的猜測是你所要求的,如果B = C,E =「」和d =「」回覆C ELSE' 即 SELECT CASE WHEN B = C AND E = '' AND D = '' THEN C ELSE '' END as A FROM tableA

0

你的意思是這樣的呢?

SELECT ValueA, 

    CASE 
    when ValueB = ValueA THEN ValueC 
    else '' 
    End as ValueC, 

    CASE 
    when ValueE IS NULL THEN '' 
    END AS ValueD 

很難準確理解你需要什麼。您可以添加您擁有的數據(多行)以及您期望得到的輸出結果嗎?
大多數人不喜歡數據的圖像,但這總比沒有好。 :-) 謝謝!