SQL Server错误:子查询返回多个值
我写了查询,但我得到这个错误:SQL Server错误:子查询返回多个值
Msg 512, Level 16, State 1, Line 1
Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.
这是我的查询:
SELECT
d.Description,
s.Version,
d.UtiPrefix,
d.UTI,
d.PrimaryAC,
s.ReportingObb,
s.ReportingObb,
d.LEI,
d.LEI_Countp,
d.LEI,
s.ReportingDeleg,
d.Curr,
c.Trade_Party_Domicile,
c.LEI_SGR,
Price = (
SELECT Price
FROM Price p
WHERE p.DATE = '2014-09-15 00:00:00.000'
)
FROM
Derivatives AS d
INNER JOIN
Settings AS s ON d.LEI_SGR = s.LEI_SGR
INNER JOIN
Clients c ON d.LEI_SGR = c.LEI_SGR
WHERE
c.LEI_SGR = '8156008BA0ABD6B3AE15'
这是因为你的子查询SELECT Price FROM Price p WHERE p.DATE = '2014-09-15 00:00:00.000'
是返回多行。您的Price
表对于2014-09-15
有多个price
。
更新:我在另一个答案的评论中看到,您希望在结果中显示该日期的所有价格。您需要将price
表加入您的查询。不要在SELECT子句中查询price
表。
SELECT d.Description,
s.Version,
d.UtiPrefix,
d.UTI,
d.PrimaryAC,
s.ReportingObb,
s.ReportingObb,
d.LEI,
d.LEI_Countp,
d.LEI,
s.ReportingDeleg,
d.Curr,
c.Trade_Party_Domicile,
c.LEI_SGR,
p.Price
FROM Derivatives AS d
INNER JOIN Settings AS s
ON d.LEI_SGR = s.LEI_SGR
INNER JOIN Clients c
ON d.LEI_SGR = c.LEI_SGR
,price p
WHERE c.LEI_SGR = '8156008BA0ABD6B3AE15' and p.date = '2014-09-15 00:00:00.000'
是的,我知道,但最新的解决方案是什么请 – user3826166 2014-09-25 14:18:32
如果该日期的价格表中有多个记录,那么你需要决定哪个价格记录你想选择。 max(价格),avg(价格),TOP 1价格,删除该日期表中的所有其他价格。我无法告诉你如何选择正确的价格。 – JNevill 2014-09-25 14:24:11
我已经添加了一个SQL语句到我的答案,将交叉加入价格到您的查询结果给你多个记录,每个价格'2014-09-15' – JNevill 2014-09-25 14:27:42
由于错误消息告诉你,你的子查询返回多个结果。您可以修复它这样:
对于MySQL:
SELECT Price
FROM Price p
WHERE p.DATE = '2014-09-15 00:00:00.000'
LIMIT 1
对于T-SQL:
SELECT TOP 1 Price
FROM Price p
WHERE p.DATE = '2014-09-15 00:00:00.000'
希望这将帮助你
我已经尝试与顶部(1),但感染我需要显示所有的价格根据该日期,所以我不能选择只有1 – user3826166 2014-09-25 14:23:04
在这种情况下,您的问题是不是解决错误,但为了解决您的查询,以获得预期结果 – 2014-09-25 14:25:14
你需要从恢复力的子查询不止一行。
一种方法是使用MAX()
:
...
Price = (
SELECT MAX(Price)
FROM Price p
WHERE p.DATE = '2014-09-15 00:00:00.000'
)
...
其他选项:
AVG()
MIN()
-
TOP 1
/LIMIT 1
(ETC取决于数据库)
您的子查询返回多个行。任何外键有价格然后加入,也在子查询 – Sathish 2014-09-25 14:14:33
你的问题是什么?错误信息是不言自明的。 – 2014-09-25 14:17:38
改为选择适当的单价。 – Randy 2014-09-25 14:18:21