0

2つのデータテーブルがあるとしましょう。

Table A
ID    Colors
--    ------
1     Blue
1     Green
1     Red

Table B
ID    States
--    ------
1     MD
1     VA
1     WY
1     CA

これらのテーブルを結合して、12行ではなく次の行を取得することは可能ですか?

ID    Colors    States
--    ------    ------
1     Blue      MD
1     Green     VA
1     Red       WY
1               CA

色と状態の列の間に関連性はなく、列の順序は重要ではありません。(たとえば、青はMD、VA、WY、またはCAの横に配置できます)IDごとの各列(色または状態)の項目の数は等しくありません。

ありがとう。

4

2 に答える 2

1

これを行うには、を使用row_number()して偽の結合列を作成します。

select coalesce(a.id, b.id) as id, a.colors, b.states
from (select a.*, row_number() over (order by id) as seqnum
      from a
     ) a full outer join
     (select b.*, row_number() over (order by id) as seqnum
      from b
     ) b
     on b.seqnum = a.seqnum

実際、Oracleでは、次を使用することもできますrownum

select coalesce(a.id, b.id) as id, a.colors, b.states
from (select a.*, rownum as seqnum
      from a
     ) a full outer join
     (select b.*, rownum as seqnum
      from b
     ) b
     on b.seqnum = a.seqnum
于 2013-02-22T22:21:06.580 に答える
0

次のように、CTE (Common Table Expression) を使用することもできます。

WITH TableA (ID, Color) AS
(
    SELECT "ID", Color 
    FROM DatabaseName.TableA
)
, Joined AS (
    SELECT 
        a.ID AS "AID",
        a.Color
        b.ID AS "BID", 
        b."State"
    FROM, 
        TableA AS a
            RIGHT OUTER JOIN DatabaseName.TableB AS b ON a.ID = b.ID
)

SELECT
    AID,
    Color,
    State
FROM
    Joined
于 2013-02-22T22:34:59.350 に答える