2017-05-30 23 views
1

我有一個查詢,看起來像這樣:選擇數和列值,如果計數> 0

SELECT 
    case when count(*) > 0 then 'Y' else 'N' end exists, 
    column 
FROM 
    table 
WHERE 
    condition; 

這不工作,因爲我沒有一組的功能。但是如果我在「列」上分組,那麼如果條件不滿足,我會得到0行。我知道,我的查詢將只返回一行,但即使我只查詢選擇第一行,它仍然表示它需要一個功能組。

我從查詢理想的輸出將

'Y' | 1

如果行存在

'N' |空

,如果它不

我能做些什麼來解決這個問題?

回答

2

你可以簡單地做:

SELECT (case when count(*) > 0 then 'Y' else 'N' end) as exists, 
     MAX(column) as column 
FROM table 
WHERE condition; 

聚集查詢沒有GROUP BY總是返回一行。

+0

我同意這是最好的解決方案。當你保證一行時,然後使用MAX()必須給你列的值。具有單個值的集合中的最大值必須是該值。 –

+0

是的,這工作。非常感謝 –

0
SELECT 
    case when count(*) > 0 then 'Y' else 'N' end exists, 
    max(1) as column 
FROM 
    table 
WHERE 
    condition; 

this returns Y | 1條件滿足時。