2016-07-25 91 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