-2

我正在尝试做一些计数。第一个子查询是总扫描计数。第二个子查询是 60 分钟内扫描计数。提前抱歉这被压缩了。分开时两者都能正常运行。

我在第 12 行和第 22 行收到“当不使用 EXISTS 引入子查询时,选择列表中只能指定一个表达式”错误我不熟悉 Exists。

SELECT
MONTH(F_IP_HSP_SUM_MED_ADMIN.SCHEDULED_DATETIME) AS MONTH
,V_MAR_BARCODE_COMPLIANCE.DEPARTMENT_NAME AS UNIT
,(SELECT DISTINCT 
MONTH(F_IP_HSP_SUM_MED_ADMIN.SCHEDULED_DATETIME) AS MONTH
,V_MAR_BARCODE_COMPLIANCE.DEPARTMENT_NAME AS UNIT
,count(med_scanned_bool)
FROM F_IP_HSP_SUM_MED_ADMIN
INNER JOIN V_MAR_BARCODE_COMPLIANCE ON F_IP_HSP_SUM_MED_ADMIN.ORDER_MED_ID=V_MAR_BARCODE_COMPLIANCE.ORDER_MED_ID AND LINE=MAR_LINE
WHERE MED_SCANNED_BOOL=1
GROUP BY MONTH(SCHEDULED_DATETIME), V_MAR_BARCODE_COMPLIANCE.DEPARTMENT_NAME
) AS SCANNED_D
,(SELECT DISTINCT
MONTH(F_IP_HSP_SUM_MED_ADMIN.SCHEDULED_DATETIME) AS MONTH
,V_MAR_BARCODE_COMPLIANCE.DEPARTMENT_NAME AS UNIT
,count(med_scanned_bool) AS SCANNED_N
FROM F_IP_HSP_SUM_MED_ADMIN
INNER JOIN V_MAR_BARCODE_COMPLIANCE ON F_IP_HSP_SUM_MED_ADMIN.ORDER_MED_ID=V_MAR_BARCODE_COMPLIANCE.ORDER_MED_ID AND LINE=MAR_LINE
WHERE MED_SCANNED_BOOL=1
AND SECONDS_AFTER_SCHEDULED<'3600' --Within 60 Minute Window
GROUP BY MONTH(SCHEDULED_DATETIME), V_MAR_BARCODE_COMPLIANCE.DEPARTMENT_NAME
)AS SCANNED_N

FROM F_IP_HSP_SUM_MED_ADMIN
INNER JOIN V_MAR_BARCODE_COMPLIANCE ON F_IP_HSP_SUM_MED_ADMIN.ORDER_MED_ID=V_MAR_BARCODE_COMPLIANCE.ORDER_MED_ID AND LINE=MAR_LINE
4

1 回答 1

0
(SELECT DISTINCT 
   MONTH(F_IP_HSP_SUM_MED_ADMIN.SCHEDULED_DATETIME) AS MONTH,
   V_MAR_BARCODE_COMPLIANCE.DEPARTMENT_NAME AS UNIT,
   count(med_scanned_bool)
...) AS SCANNED_D

在查询的列选择部分,您只能有返回列而不是 3 的子选择。

如果您使用的是支持公用表表达式的数据库,则可以将多列子选择替换为使用 CTE 连接。

于 2013-05-23T17:26:10.457 回答