ich die folgende SQL:Unterabfrage hat mehr als 1 Wert zurückgegeben. Dies ist nicht zulässig, wenn die Unterabfrage als Ausdruck verwendet wird.
SELECT
cusip,
symbol,
CASE WHEN (U1 = 0 OR U2 = 0 OR U3 = 0)
THEN 0 END Universe_Flag,
CASE WHEN (S1 = 'STOP' OR S2 = 'STOP' OR S3 = 'STOP')
THEN 'STOP'
WHEN (S1 = 'ACTIVE' OR S2 = 'ACTIVE' OR S3 = 'ACTIVE')
THEN 'ACTIVE' `enter code here`
END Status
FROM (
SELECT
b.cusip,
b.symbol,
(SELECT UNIVERSE FROM sec_master m WHERE m.CUSIP = b.cusip) U1,
(SELECT UNIVERSE FROM sec_master m WHERE m.SEDOL = b.cusip) U2,
(SELECT UNIVERSE FROM sec_master m WHERE m.CINS = b.cusip) U3,
(SELECT SEC_STATUS FROM sec_master m WHERE m.CUSIP = b.cusip) S1,
(SELECT SEC_STATUS FROM sec_master m WHERE m.SEDOL = b.cusip) S2,
(SELECT SEC_STATUS FROM sec_master m WHERE m.CINS = b.cusip) S3
FROM (
SELECT
e.cusip,
e.symbol
FROM benchmark e
WHERE e.date > DATEADD(month, DATEDIFF(month,0,GETDATE()), 0)
) b
LEFT JOIN sec_master x1
ON x1.CUSIP = b.cusip
AND x1.SEC_STATUS = 'ACTIVE'
AND x1.UNIVERSE = 1
LEFT JOIN sec_master x2
ON x2.SEDOL = b.cusip
AND x2.SEC_STATUS = 'ACTIVE'
AND x2.UNIVERSE = 1
LEFT JOIN sec_master x3
ON x3.CINS = b.cusip
AND x3.SEC_STATUS = 'ACTIVE'
AND x3.UNIVERSE = 1
WHERE x1.SEC_ID IS NULL
AND x2.SEC_ID IS NULL
AND x3.SEC_ID IS NULL
) X
Aber geben die folgende Fehlermeldung:
Msg 512, Level 16, State 1, Line 69 Subquery returned more than 1 value. This is not permitted when the subquery follows
=
,!=
,<
,<=
, >>
,>=
or when the subquery is used as an expression.
Meine Vermutung ist, dass Ihre Unterabfragen auf der 'sec_master' Tabelle der cuprit sind. Übrigens, verwenden Sie MySQL oder SQL Server? –
Sie sollten stattdessen alle diese unangenehmen Unterabfragen verwenden. –