1

2 つの列を持つテーブルがあります。1 つ目は PKey、2 つ目は識別子です。それぞれBANとIID。

個別の BAN ごとに上位 2 つの IID を抽出しようとしています。From でサブクエリを使用して、正常に動作する Max(IID) を取得しました。ただし、テーブルを最初のステートメントに結合して、次に高い MAX(IID) を取得しようとすると、次のようになります。

「メッセージ 4104、レベル 16、状態 1、行 1 マルチパート識別子 "ii.iid" をバインドできませんでした。」

これは、2 番目の結合 "where iid < ii.iid" の Where ステートメントを参照しています。

select distinct ii.BAN, ii.IID, ii2.IID
    from (select distinct BAN, IID = Max(IID) from Bill_Timeliness..Invoices with(nolock) group by BAN) II
    join (select distinct BAN, IID = Max(IID) from Bill_Timeliness..Invoices with(nolock) where iid  < ii.iid group by BAN) II2 
        on ii.ban = ii2.ban

whereステートメントの2番目のサブクエリとして最初の部分を再作成しようとしました。

どこで iid < max(ii.iid) も試しました

これらのどちらも機能しませんでした....誰かが私をここで助けてくれれば本当にありがたいです.

-ベン

4

2 に答える 2

0

これはあなたのために働くはずです:

select o.BAN, 
       x.MaxID as TopID, 
       MAX(case when o.IID != x.MaxID then o.IID else null end) as SecondID
from (
    select BAN, MAX(IID) as MaxID
    from Bill_Timeliness..Invoices group by BAN) x
inner join Bill_Timeliness..Invoices o
on x.BAN = o.BAN
group by o.BAN,
         x.MaxID 
于 2013-07-10T21:13:50.267 に答える