以下のコードを実行しているときにSELECT TOPを使用している理由がわかりません。クエリを実行すると出力が表示されませんが、何が問題なのか誰にでも見えますか?SELECT TOPを使用するとサブクエリが1つ以上の値を返しました
サブクエリが1より大きい値を返しました。 =、!=、<、< =、>、> =、またはサブクエリが式として使用されている場合は、これは許可されません。
;WITH cte AS
(
SELECT f.FixtureID,
ht.FinalTeamWeight - at.FinalTeamWeight AS TeamScore
FROM dbo.Fixture f
...
)
UPDATE f
SET f.HomeScore = s.HomeScore,
f.AwayScore = s.AwayScore
FROM dbo.Fixture f
INNER JOIN
(
SELECT FixtureID,
TeamScore,
(
SELECT
CASE
WHEN c.TeamScore BETWEEN HomeWeighting AND AwayWeighting AND HomeScore > AwayScore AND s.ScoreDifference = sr.ScoreDifference
THEN (SELECT TOP 1 ScoreID FROM dbo.Score WHERE HomeScore > AwayScore AND ScoreDifference = 1 ORDER BY NEWID())
END AS ScoreID
FROM dbo.Score s
LEFT JOIN ScoreReference sr
ON s.ScoreDifference = sr.ScoreDifference
) AS ScoreID -- end select case
FROM cte c
) -- end inner join
AS ScoreResult
ON f.FixtureID = ScoreResult.FixtureID
INNER JOIN Score s
ON ScoreResult.ScoreID = s.ScoreID
INNER JOIN ScoreReference sr
ON s.ScoreDifference = sr.ScoreDifference
TABLES: SCORE_REFERENCE
SCORE:
[最小限で完全であり、かつ検証可能な例を作成する方法](http://stackoverflow.com/help/mcve)をお読みください。 –
あなたの 'SELECT CASE'は複数の結果を返します。 – Arvo
ここには複数のサブクエリがあり、複数のサブクエリが単一の値を返すべき位置で使用されています。あなたの「* 1」に「TOP 1」を使用しているだけなので、他の人にこのメッセージの発信元として割り引かれているのはなぜですか? –