2016-07-25 99 views
0

我在SELECT語句中有一個case語句返回很多值,但我只想要第一個值,因爲我正在做一個Count。返回CASE語句中的第一行

SELECT DISTINCT 
ATM.TicketID 
,COUNT(CASE WHEN ((ATM.PriorityID='E' OR ATM.PriorityID='U') AND 
MAX(ATQ.QuestionID) THEN 1 END)) AS [A] 
..... 

對於每個「E」和「U」值,都有很多QuestionID(從另一個表中連接)。但我只需要爲每個E或U提供一個QuestionID。

我對嵌套聚合有困難。

+1

在查詢你不能時間旅行。直到掃描完所有行後纔會知道max()值,所以在掃描行時不能使用它。 –

+0

我不需要一定使用MAX,我只需要選擇許多QuestionID中的一個 – bojackh

回答

0

移動PriorityID的where子句

SELECT 
ATM.TicketID, ATM.PriorityID, MAX(ATQ.QuestionID) 
FROM ATM 
    INNER JOIN ATQ ON {some criteria} 
WHERE ATM.PriorityID = 'E'OR ATM.PriorityID = 'U' 
GROUP BY ATM.TicketID, ATM.PriorityID