Я пытаюсь объединить эти два утверждения с одним, но все мои попытки не удались! Можно ли их объединить?TSQL - TOP и COUNT в одном SELECT
-- Is there a open answer?
SELECT CASE COUNT(tbl_Communication.pk_Communication) WHEN 0
THEN 0 ELSE 1 END AS hasAnsweredCom
FROM tbl_Communication
JOIN tbl_CommunicationElements ON tbl_CommunicationElements.pk_Communication = tbl_Communication.pk_Communication
WHERE tbl_Communication.pk_Ticket = @pk_Ticket
AND tbl_Communication.isClosed = 0
AND tbl_Communication.pk_CommunicationType = (SELECT pk_CommunicationType
FROM tbl_CommunicationType
WHERE name = 'query')
-- Get the answer text
SELECT TOP 1 tbl_Communication.subject AS hasAnsweredComStepName
FROM tbl_Communication
JOIN tbl_CommunicationElements ON tbl_CommunicationElements.pk_Communication = tbl_Communication.pk_Communication
WHERE tbl_Communication.pk_Ticket = @pk_Ticket
AND tbl_Communication.isClosed = 0
AND tbl_Communication.pk_CommunicationType = (SELECT pk_CommunicationType
FROM tbl_CommunicationType
WHERE name = 'query')
ORDER BY tbl_Communication.pk_Communication
'ТОП 1' заказал что? Также смотрите 'CASE WHEN EXISTS', а не считая их всех и устанавливая флаг, если он равен нулю. –
Зачем нужен заказ? оба оператора приведут к 1 единственной строке/полю. – MacTee
@ Эйхенвальд: Да, но второй нужен «ТОП-1», который предполагает, что существует несколько строк, поэтому вы должны их заказать, иначе выход непредсказуем. Даже если это не имеет значения для вас (сейчас), это плохая привычка пропускать «ЗАКАЗАТЬ». –