J'essaie de combiner ces deux instructions en une, mais toutes mes tentatives ont échoué! Est-il possible de les fusionner?TSQL - TOP et COUNT en un 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
'TOP 1' commandé par quoi? Regardez aussi 'CASE WHEN EXISTS' plutôt que de les compter tous et de mettre un drapeau si non zéro. –
pourquoi commander? les deux instructions entraîneront 1 seule ligne/champ. – MacTee
@Eichenwald: Oui, mais la seconde a besoin d'un «TOP 1» qui suggère qu'il y a plusieurs lignes, donc vous devriez les commander, sinon la sortie est imprévisible. Même si cela n'a pas d'importance pour vous (maintenant) c'est une mauvaise habitude d'omettre le «ORDER BY». –