-1

表1

column_pk  num  name   id -1   id-2     id-3
1          145  sam    12345   null     34527
2          187  tom    null    76544    null
3          567  david  78965   43215    89765
4          675  john   null    null     null

上記の表に示すように、特定の column_pk id-1、id-2、id-3 に値を指定することも、null にすることもできます

次のようにid-1、 id-2を行に移動する必要があります。id-3Table2

  • Sam には 2 つの ID があるため: id-1&id-3同じ num 145 に対して Sam には 2 つの行があります

  • Table 1Davidには に 3 つの ID がTable 2あるため、同じ num 567 に対して David の 3 つの行があります。

表 2

Column_pk  num    name     id
1          145    sam      12345
2          145    sam      34527
3          187    tom      76544
4          567    david    78965
5          567    david    43215          
6          567    david    89765
  • update ステートメントをいくつか使用してみましたが、これらのステートメントは限られたデータにのみ役立ちます。大量のデータ転送がある場合に、これを手伝ってもらえますか。
4

2 に答える 2

0

を使用UNIONして、結果を組み合わせることができます。次に、使用ROW_NUMBER()して新しい pk 列を取得します。

select Row_Number() OVER (ORDER BY column_pk,sortorder) Column_pk, 
  num, name, id
from
  (
    select column_pk, num, name, id1 id, 1 sortorder
    from yourtable
    union 
    select column_pk, num, name, id2, 2 sortorder
    from yourtable
    union 
    select column_pk, num, name, id3, 3 sortorder
    from yourtable
    ) t
where id is not null

SQL フィドルのデモ

于 2013-04-09T02:28:03.070 に答える