【问题标题】:Exist error in subquery子查询中存在错误
【发布时间】:2013-05-19 04:17:15
【问题描述】:

我正在尝试做一些计数。第一个子查询是总扫描计数。第二个子查询是 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

【问题讨论】:

  • 您需要格式化该代码并学习如何在编写 sql 时关闭大写锁定键...
  • 什么是 RDBMS(SQL 风格)?

标签: sql subquery exists


【解决方案1】:
(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 连接。

【讨论】:

  • 好的,感谢您提供的信息....我有点知道,但不确定。接受了你的建议约阿希姆。现在我得到这个错误。子查询返回超过 1 个值。当子查询跟随 =、!=、、>= 或子查询用作表达式时,这是不允许的。
  • @user2414620 似乎您的子选择返回多行,这是不允许的,因为它位于查询的列选择部分。由于列选择只告诉一行返回的值是什么,你不能让一个值是多行。听起来您的子选择可能应该加入查询的FROM 部分,这将允许多列和多行。
  • 你可以在 from 语句中做子选择吗?你能举例说明你的说法吗?
猜你喜欢
  • 2017-02-08
  • 2013-09-26
  • 2012-07-23
  • 1970-01-01
  • 1970-01-01
  • 2016-02-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多