Sql 将两个查询合并到一个用例中-当sum上出现varchar错误时

Sql 将两个查询合并到一个用例中-当sum上出现varchar错误时,sql,sql-server,join,Sql,Sql Server,Join,目前的结果是这样的 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

目前的结果是这样的

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

注意,我用(NOLOCK)删除了
。除非您真正了解它的功能,否则不应该使用它。

语法显然是SQL Server,因此我更改了标记。再见,戈登,谢谢您的回答!它神奇地工作了,呵呵,我是在生产服务器上做的,因此我被告知大部分时间使用nolock来防止增加服务器流量的机会
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;