2017-10-20 9 views
-2

私はこのサブクエリを持っている:外部クエリのサブクエリから「Select 1」として定義されたフィールドにアクセスできないのはなぜですか?

LEFT JOIN (SELECT 1 as exist 
        , MAX (ev.EventDate) as eventdate 
        , evt.EventCode 
        , CCaseID 
      FROM stg.Event ev 
      JOIN stg.EventTemplate evt 
      ON ev.EventTemplateID = evt.ID 
      WHERE evt.EventCode = 'UN002' 
      Group by CCaseID, evt.EventCode) as un002 
    ON un002.CCaseID = ev.CCaseID 
WHERE evt.EventCode = 'UN001' 
    AND (un002.eventdate < ev.eventdate OR un002.eventdate IS NULL) 
Group by ev.CCaseID, evt.EventCode) as un001 
    ON cc.ID = un001.CCaseID 

私は今un001.existあたりのように、外側のクエリに存在するフィールドにアクセスしようとしていますが、SQL Serverは、無効なフィールドであることを私に伝えます。私は何が欠けていますか?

+1

をカラムが1呼び出された場合は、単に示すように角括弧で[1]の数をブラケットてみてください。 – russ

+2

メインクエリの「exist」という列にアクセスできない理由を尋ねていますか? –

+3

まあ.... un001.existは有効な列ではありません。そのサブクエリにun002という名前を付けました。これにより、より良い書式設定があるかどうかを簡単に確認できます。 –

答えて

1

un001は、サブクエリに属する​​existを持っていません。

また、GROUP BYと、ONがありますので、そこにコードがありません。

コードを簡略化し、CTEを使用して読みやすくデバッグしやすくする必要があります。

このような何か:

WITH un001 as (SELECT ...), 
un002 as (SELECT ...) 
SELECT * 
FROM un001 
JOIN un002 
    ON un001 .CCaseID = un002.CCaseID 
+1

投稿されたコードには複数のものがありません。 –

+0

@SeanLangeあなたはまあまあです。 –

関連する問題