首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当我使用子查询时,当子查询跟随=,!=,<,<=,>,>=时,这是不允许的

当我使用子查询时,当子查询跟随=,!=,<,<=,>,>=时,这是不允许的
EN

Stack Overflow用户
提问于 2017-03-02 02:39:55
回答 1查看 47关注 0票数 0

当我运行以下查询时:

代码语言:javascript
复制
SELECT 
    CASE 
       WHEN AT_EMPSCHEDULE.START1 <> '01/01/1900' 
            AND AT_EMPSCHEDULE.START2 <> '01/01/1900' 
            AND AT_EMPSCHEDULE.END2 <> '01/01/1900'
            AND AT_EMPSCHEDULE.LEAVECODE ='' 
            AND NOT EXISTS(SELECT PDATE 
                           FROM HR_PUBHOLIDAY 
                           WHERE PDATE=AT_EMPSCHEDULE.TRANDATE) 
            AND DATEPART(WEEKDAY,AT_EMPSCHEDULE.TRANDATE) <> 1 
          THEN 
             CAST((SELECT HIS_GENSALARYD.BASESALARY/HIS_GENSALARYD.WORKDAY 
                   FROM HIS_GENSALARYD 
                   WHERE (AT_EMPSCHEDULE.TRANDATE BETWEEN HIS_GENSALARYD.PAYFROM 
                                                  AND HIS_GENSALARYD.PAYTO 
                     AND HIS_GENSALARYD.EMPCODE = AT_EMPSCHEDULE.EMPCODE)) AS DECIMAL(10, 2)) 
          ELSE 0 
    END AS DAILYSALARY
FROM 
    HIS_GENSALARY 
INNER JOIN 
    AT_EMPSCHEDULE ON HIS_GENSALARY.EMPCODE = AT_EMPSCHEDULE.EMPCODE 
                   AND MONTH(TRANDATE) = HIS_GENSALARY.INMONTH 
                   AND YEAR(TRANDATE) = HIS_GENSALARY.INYEAR 
WHERE 
    HIS_GENSALARY.EMPCODE = HIS_GENSALARY.EMPCODE

我收到这样的信息:

子查询返回的值超过一个。当子查询跟随=、!=、<、<=、>、>=或子查询用作表达式时,这是不允许的。

EN

回答 1

Stack Overflow用户

发布于 2017-03-02 19:24:40

问题在于:

代码语言:javascript
复制
(SELECT HIS_GENSALARYD.BASESALARY/HIS_GENSALARYD.WORKDAY 
 FROM HIS_GENSALARYD 
 WHERE AT_EMPSCHEDULE.TRANDATE BETWEEN HIS_GENSALARYD.PAYFROM 
     AND HIS_GENSALARYD.PAYTO 
 AND HIS_GENSALARYD.EMPCODE = AT_EMPSCHEDULE.EMPCODE)

你用它来表达。根据错误消息,它只能在您使用它的地方产生一个结果;即它不能返回超过一行,但是至少有一个调用返回了多个行。

若要强制它只返回一行,请向其应用聚合函数;一个明显的选择是max()

代码语言:javascript
复制
(SELECT MAX(HIS_GENSALARYD.BASESALARY/HIS_GENSALARYD.WORKDAY)
 FROM HIS_GENSALARYD 
 WHERE AT_EMPSCHEDULE.TRANDATE BETWEEN HIS_GENSALARYD.PAYFROM 
     AND HIS_GENSALARYD.PAYTO 
 AND HIS_GENSALARYD.EMPCODE = AT_EMPSCHEDULE.EMPCODE)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42545845

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档