Объедините два запроса в один - используйте случай, когда выдает ошибку varchar на сумму - PullRequest
0 голосов
/ 06 февраля 2020
SELECT LOCA_SHORT_CODE AS OUTLET_CD, COUNT (TTD_LOC_ID) AS TOTAL_ADM
FROM #tempTrxnTicDetail WITH(NOLOCK) 
WHERE TTD_BUS_DATE BETWEEN @StartDate AND @EndDate
GROUP BY LOCA_SHORT_CODE, TTD_LOC_ID
ORDER BY OUTLET_CD ASC

SELECT COUNT (TTD_POS_NO) AS EKIOSK_ADM
FROM #tempTrxnTicDetail WITH(NOLOCK)
WHERE TTD_POS_NO LIKE 'KIOSK%'
GROUP BY LOCA_SHORT_CODE, TTD_LOC_ID, TTD_POS_NO

как текущий результат это

OUTLET_CD  | TOTAL_ADM
 1. 1U2    | 974
 2. ABM    | 1184 and so on intended result is  

OUTLET_CD | TOTAL_ADM | KIOSK_ADM
 1. 1U2   | 974       | 254
 2. ABM   | 1184      | 30

1 Ответ

1 голос
/ 06 февраля 2020

Использовать условное агрегирование:

SELECT LOCA_SHORT_CODE AS OUTLET_CD, COUNT(TTD_LOC_ID) AS TOTAL_ADM,
       SUM(CASE WHEN TTD_POS_NO LIKE 'KIOSK%' THEN 1 ELSE 0 END) as TOTAL_KIOSK
FROM #tempTrxnTicDetail 
WHERE TTD_BUS_DATE BETWEEN @StartDate AND @EndDate
GROUP BY LOCA_SHORT_CODE, TTD_LOC_ID
ORDER BY OUTLET_CD ASC;

Обратите внимание, что я удалил WITH (NOLOCK). Если вы действительно не понимаете, что это делает, вы не должны его использовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...