繁体   English   中英

SQL Server 2008-子查询返回多个值

[英]SQL server 2008 - subquery returned more than one value

SQL Server 2008-从查询结果集中读取数据时发生错误。 子查询返回的值超过1。 当子查询遵循=,!=,<,<=,>,> =或将子查询用作表达式时,不允许这样做。

This came up as soon I added the case statement with CHDOCS. Everything else worked
 fine until that point. Can anyone help me out with this one please?


SELECT
CHDOCS.MAILING_ID
,CASE WHEN (SELECT CHDOCS.MAILING_DOCUMENT
       FROM CHDOCS 
       WHERE
               CHDOCS.MAILING_DOCUMENT LIKE N'%EX%')IS NOT NULL

               THEN (SELECT CHDOCS.MAILING_DOCUMENT
       FROM CHDOCS 
       WHERE
               CHDOCS.MAILING_DOCUMENT LIKE N'%EX%') ELSE '' END AS 'DOC'

     FROM CHDOCS

您不能对结果集使用CASE语句-必须对单个值运行它。

我相信这是您要完成的工作,它是对CHDOCS表中每个MAILING_DOCUMENT字段的评估:

SELECT CHDOCS.MAILING_ID

    -- Check if the Mailing Document field matches the pattern *EX*
    ,CASE WHEN CHDOCS.MAILING_DOCUMENT LIKE N'%EX%' 
        THEN CHDOCS.MAILING_DOCUMENT  -- It does, return the field value.
        ELSE ''                       -- It doesn't, return empty.
        END AS DOC

FROM CHDOCS

您的这个查询

SELECT
    CHDOCS.MAILING_ID, ISNULL(CHDOCS.MAILING_DOCUMENT,'')
    FROM CHDOCS
WHERE CHDOCS.MAILING_DOCUMENT LIKE N'%EX%'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM