4

私はSQLしばらくの間苦労してきました。テーブルから 2 番目に高い ID を返すクエリを作成する必要があります。特にそのリンクを見つけた場合は、簡単に聞こえます。

しかし、もう少し複雑なクエリがあります。

SELECT 
  p.column1,
  p.column2,
  p.column3,
  p.column4,
  (
    SELECT 
      p.column1 
    FROM 
      p_table p
    WHERE 
      p.column2 = (
        SELECT
          id
        FROM (
          SELECT 
            id,
            RANK() OVER (ORDER BY id DESC) rank_id
          FROM 
            other_table 
          WHERE 
            field = p.column3
        )
        WHERE
          rank_id = 2
      )
    ) AS sth
FROM ...

Oracle は、ORA-00904: 不明な識別子を示していp.column3ます。なぜそう言っているのか理解しています-pテーブル名のエイリアスとして認識されません。

ネストされたクエリに渡すことは可能ですか?

4

1 に答える 1

0

クエリからネストされたクエリのネストされたクエリに列を渡すことはできません。

私はこれが同じ仕事をすることができると思います:

    選択する
      p.column1、
      p.column2、
      p.column3、
      p.column4、
      (
        選択する
          p.column1
        から
          p_table p
        どこ
          (p.column2, 2) = (SELECT ID,
                                   RANK() OVER (ORDER BY id DESC) rank_id
                              から
                                    その他のテーブル
                             どこ
                                    フィールド = p.column3
                             )

        ) AS sth
    から

于 2012-09-20T19:23:17.393 に答える