MS SQL2005年注文の収集とサブクエリの失敗
-
28-09-2019 - |
質問
これは簡易版のリクエリの問題です。生成される必要があるため、このサンプルAdventureworksデータベース:
SELECT Person.Address.*,
(SELECT TOP 1 [Name]
FROM Person.StateProvince
WHERE Person.StateProvince.StateProvinceId = Person.Address.StateProvinceId AND Person.StateProvince.TerritoryId IN (5, 6, 7)
ORDER BY Person.StateProvince.TerritoryId) AS [Name]
FROM Person.Address
ORDER BY [Name]
これでもうまくいくが、もっと私の問題がある場合を追加する照合のためのフィールドにとって不思議なエラーメッセージ:
SELECT Person.Address.*,
(SELECT TOP 1 [Name]
FROM Person.StateProvince
WHERE Person.StateProvince.StateProvinceId = Person.Address.StateProvinceId AND Person.StateProvince.TerritoryId IN (5, 6, 7)
ORDER BY Person.StateProvince.TerritoryId) AS [Name]
FROM Person.Address
ORDER BY [Name] COLLATE Chinese_PRC_CI_AI
のエラー:
Msg 207, Level 16, State 1, Line 7
Invalid column name 'Name'.
クエリの照合条項の作品もあれば、サブクエリが必要ですこのような(た複雑な理由だきました:)).
は誰も知らなぜこのクエリは失敗し、何ができる可能性を有することが避?このバグ?
よろしく!アダム
解決
SQLサーバできませんを参照してカラムによる別名によって提供しています。例えば、これは動作しません:
select id+1 as x from MyTable order by x
ができる修正を繰り返しのカラム定義:
select id+1 as x from MyTable order by id+1
を使用することによりサブクエリ:
select * from (select id+1 as x from MyTable) as subquery order by x
お場合は、修正あるサブクエリを利用する:
SELECT *
FROM (
SELECT Person.Address.*
, (
SELECT TOP 1 [Name]
FROM Person.StateProvince
WHERE Person.StateProvince.StateProvinceId =
Person.Address.StateProvinceId
AND Person.StateProvince.TerritoryId IN (5, 6, 7)
ORDER BY
Person.StateProvince.TerritoryId
) AS [Name]
FROM Person.Address
) as SubqueryAlias
ORDER BY
[Name]
所属していません StackOverflow