1

わかりました、ビューの重複を抑制するためにセルフクエリを実行しています。私が使用しているコードは次のとおりです。

    USE BILLING

    SELECT Provider_Code,
           Provider_LName,
           Provider_Fname,
           Provider_Title,
           AGENCY_LOCATION_NAME_LINE_1,
           CostCenter_AbbrName
    FROM   dbo.ServiceProfiler prov1
           INNER JOIN
           dbo.ServiceProfiler prov2
           ON prov1.Provider_Code = prov2.Provider_Code
    WHERE  0 = (SELECT COUNT(s1.Provider_Code)
                FROM   prov1
                WHERE  prov2.Provider_Code = prov1.Provider_Code
                       AND prov2.Provider_Code < prov1.Provider_Code);

SQL Server 2005 でクエリを実行すると、次のメッセージが表示されます。

メッセージ 208、レベル 16、状態 1、行 3
無効なオブジェクト名 'prov1'。

エイリアス名が無効である理由を一生理解できません。ここで同様の質問を見つけたと思います。しかし、これは非常に一般的であり、エイリアスを使用した完全な「実際の」クエリは表示されません。

4

4 に答える 4

2

私はもっ​​とこのようなことをします:

SELECT Provider_Code,
           Provider_LName,
           Provider_Fname,
           Provider_Title,
           AGENCY_LOCATION_NAME_LINE_1,
           CostCenter_AbbrName
FROM   dbo.ServiceProfiler prov,
     (SELECT Provider_Code,count(*) Count from dbo.ServiceProfiler group by Provider_Code HAVING count(*)=0) q
WHERE prov.Provider_Code = q.Provider_Code

まっすぐ上にサブ選択することもできると思います。サブクエリで結合した方が分かりやすいと思いますが、それが私です。

于 2012-08-24T18:38:31.413 に答える
0

ステートメント内でprov1テーブルを呼び出すことはできません。Where ステートメントを @RB Said のように呼び出して変更する必要があります。selectwhereServiceProfiler AS Prov3

サブクエリの where 句が意味をなさないことにも注意してください。prov2.ProviderCode は、同時に prov1.ProviderCode と等しいか、小さいことはできません。

それが機能するために

于 2012-08-24T15:09:29.610 に答える
0

使用できませんFROM prov1- というテーブルがありませんprov1ドキュメントに従って、FROM はテーブルまたはビュー名である *table_source* と共に使用されます。

ただし、サブクエリの where 句から参照できます。prov1

サブクエリの where 句が意味をなさないことにも注意してください。prov2.ProviderCodeより小さい と 等しい を同時に指定することはできませprov1.ProviderCode

于 2012-08-24T14:45:00.967 に答える
0
FROM   prov1

これがあなたの問題です。は別selectのものなので、場所を指定する必要がtableありますselect from。that 、 toalias prov1の where でを使用できますが、 を指定する必要があり、新しいエイリアスも指定する必要があります。selectjointable

于 2012-08-24T14:45:48.803 に答える