【发布时间】:2014-12-30 18:35:19
【问题描述】:
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
【问题讨论】:
-
显然不止一行的文档与该模式匹配。 SQL 应该返回哪一个?
-
如果可能的话,我想全部退回。还有其他写法吗?
-
问题是什么?
-
如果有多行 CHDOCS.MAILING_DOCUMENT.. 我只想要另一行 CHDOCS.MAILING_ID
-
那么为什么不只是
SELECT Mailing_ID, Mailing_Document FROM dbo.CHDOCS WHERE Mailing_Document LIKE N'%EX%';?或SELECT Mailing_ID, Mailing_Document = CASE WHEN Mailing_Document LIKE N'%EX%' THEN Mailing_Document ELSE N'DOC' END FROM dbo.CHDOCS;
标签: sql sql-server-2008