質問

これは簡易版のリクエリの問題です。生成される必要があるため、このサンプル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]
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top