2016-12-22 1 views
0

サブクエリから各スケジュールと有料グレードのMAXレートを表示し、それをメインクエリに追加する必要があります。次のように私のサブクエリのためのselect文は次のとおりです。サブクエリの最大レコードを返してメインクエリに持ち込みます

LEFT OUTER JOIN 
(SELECT FV_PRSAGDTL_VW2.SCHEDULE, FV_PRSAGDTL_VW2.PAY_GRADE, MAX(FV_PRSAGDTL_VW2.PAY_RATE) as MaxRate 
FROM FV_PRSAGDTL_VW2 FV_PRSAGDTL_VW2 
WHERE FV_PRSAGDTL_VW2.R_STATUS in (5,2) 
GROUP By FV_PRSAGDTL_VW2.SCHEDULE, FV_PRSAGDTL_VW2.PAY_GRADE) MAXRate 
ON MAXRate.SCHEDULE = HR_EMP_POSITIONS.SCHEDULE 
AND MAXRate.PAY_GRADE = HR_EMP_POSITIONS.PAY_GRADE 

私は私のメインのクエリにこれを追加するときに、クエリは別途と同様に実行し、しかし、私は私のメインの問合せに最大の割合を引くしようとすると、私が使用していますMAXRate.PAY_RATEを「MAX Rate」とします。エラーメッセージ "無効な列名 'PAY_RATE'が表示されます。"

思考?ありがとう。

+1

どのRDBMSを使用していますか?クエリ全体を投稿できますか?あなたは 'MAXRate.MaxRate'のエイリアスを持っています –

+0

サブクエリに間違いはありませんでした –

+1

結合には' Pay_Rate'という列はありません。それは 'MaxRate'を持っています。 –

答えて

0

別名がMAX(FV_PRSAGDTL_VW2.PAY_RATE) as MaxRateであることがわかりましたが、別の列名PAY_RATEとエラーが発生しました。サブクエリ部分を以下のように変更します。また、混乱を避けるために、同じ名前の列ビューとインラインビューを別名にしないでください。あなたはXXX.MaxRate

LEFT OUTER JOIN 
(SELECT FV_PRSAGDTL_VW2.SCHEDULE, FV_PRSAGDTL_VW2.PAY_GRADE, MAX(FV_PRSAGDTL_VW2.PAY_RATE) as MaxRate 
FROM FV_PRSAGDTL_VW2 FV_PRSAGDTL_VW2 
WHERE FV_PRSAGDTL_VW2.R_STATUS in (5,2) 
GROUP By FV_PRSAGDTL_VW2.SCHEDULE, FV_PRSAGDTL_VW2.PAY_GRADE) XXX 
ON XXX.SCHEDULE = HR_EMP_POSITIONS.SCHEDULE 
AND XXX.PAY_GRADE = HR_EMP_POSITIONS.PAY_GRADE 
+0

はい私はそれも疑問に思って、最初にお勧めしたことをしました。私はあなたのサブクエリをまだ交換していましたが、メインの私のselectステートメントをXXX.PAY_RATEに変更しました。まだ同じエラー。 –

0

だけで、最大宿泊料金のdirivedテーブルを返すためにネクタイとROW_NUMBER関数と共に使用

 (SELECT top 1 with ties FV_PRSAGDTL_VW2.SCHEDULE, FV_PRSAGDTL_VW2.PAY_GRADE, FV_PRSAGDTL_VW2.PAY_RATE 
     FROM FV_PRSAGDTL_VW2 FV_PRSAGDTL_VW2 
     WHERE FV_PRSAGDTL_VW2.R_STATUS in (5,2) 
     ORDER BY ROW_NUMBER() over (partition by FV_PRSAGDTL_VW2.SCHEDULE,FV_PRSAGDTL_VW2.PAY_GRADE order by FV_PRSAGDTL_VW2.PAY_RATE desc)) as MaxRate 
    ON MAXRate.SCHEDULE = HR_EMP_POSITIONS.SCHEDULE 
    AND MAXRate.PAY_GRADE = HR_EMP_POSITIONS.PAY_GRADE 
+0

これはどこかでOver by節が必要ないのですか?これをそのまま試して、次のエラーメッセージが表示されます。関数 'row_number'にはOVER句が必要です。私を許して、私はSQLの初心者です –

+0

申し訳ありませんが、速いタイピング。編集済み –

0

を言った列にアクセスすることができます現在、Theは、列Pay_Rateを持っていない参加します。それはMaxRateを持っています。 - WEI_DBA 21 minutes ago ago

これは正解でした。そのキャッチをありがとう!

関連する問題