最低スコアで受け入れられた回答を見つけるためのデータ エクスプローラー クエリを作成していますが、この部分は正常に動作します。
SELECT TOP 25 a.Id as [Post Link],
a.Score as Score,
(SELECT COUNT(*)
FROM Votes
WHERE PostId = a.Id AND
VoteTypeId = 2) AS [Upvotes],
(SELECT COUNT(*)
FROM Votes
WHERE PostId = a.Id AND
VoteTypeId = 3) AS [Downvotes]
FROM Posts q INNER JOIN Posts a ON q.AcceptedAnswerId = a.Id
WHERE a.PostTypeId = 2
ORDER BY a.Score ASC
ただし、回答を投稿した人のスコアを計算しようとすると、パラメーターとして選択している列[Upvotes]
と列を受け入れることができません。つまり、次のようになります。[Downvotes]
SELECT TOP 25 a.Id as [Post Link],
a.Score as Score,
(SELECT COUNT(*)
FROM Votes
WHERE PostId = a.Id AND
VoteTypeId = 2) AS [Upvotes],
(SELECT COUNT(*)
FROM Votes
WHERE PostId = a.Id AND
VoteTypeId = 3) AS [Downvotes],
(15 + (([Upvotes] * 10) - ([Downvotes] * 2))) AS [Answerer's Reputation]
FROM Posts q INNER JOIN Posts a ON q.AcceptedAnswerId = a.Id
WHERE a.PostTypeId = 2
ORDER BY a.Score ASC
私は言われ、有効な列名ではありません[Upvotes]
:[Downvotes]
列名「賛成票」が無効です。列名「反対票」が無効です。
[Upvotes]
宣言したばかりの値と同じであることを示すにはどうすればよいAS [Upvotes]
ですか? それとも、これは単に不可能であり、ストアドプロシージャとして手動で行う必要がありますか?