2017-11-15 7 views
3

私の主題は少し疎ですが、私の人生のためにこれを行う方法を理解することはできません。私はC#でこれを達成することができましたが、私はSQL構文で混乱しています。私は検索して検索したので、私が探しているものを見つけることができないように思えるかもしれません。なぜなら、私が見ているSQLの一部を理解していないからです。必要なSQLヘルプ:テーブルAの各レコードについて(テーブルBより多くの列を持つ)、テーブルBに挿入

TABLE 1 
----------- 
| CustNo | Catalog1 | Catalog2 | Catalog3 | Catalog4 | 
| 1 | A  | B  | C  | NULL | 
| 2 | B  | C  | NULL | D  | 
| 3 | A  | C  | E  | F  | 



TABLE 2 (empty) 
COLUMNS: CustNo|Catalog 

だから基本的には、表1の各レコードのために、私はそのように所望の出力は次のようになり、表2 にカタログを挿入したいです。

TABLE 2 
CustNo|Catalog 
| 1 | A 
| 1 | B 
| 1 | C 
| 2 | B 
| 2 | C 
| 2 | D 
| 3 | A 
| 3 | C 
| 3 | E 
| 3 | F 

ありがとうございました!

答えて

6

ただアンピボットです。私はapplyを使ってこれを行うのが好きです。

insert into table2 (CustNo, Catalog) 
    select t1.CustNo, v.Catalog 
    from table1 t1 cross apply 
     (values (t1.Catalog1), (t1.Catalog2), (t1.Catalog3), (t1.Catalog4) 
     ) v(catalog) 
    where v.Catalog is not null; 
+0

私は何か重要なことを忘れていました。ごめんなさい。上の表1は、左結合からのものです。表1からA.CustNo、B.CATALOG1、B.CATALOG2、B.CATALOG3、B.CATALOG4 を選択してください。 は、B.CLASSID = A.CUSTCLAS – blk99cobra

+0

@ blk99cobraの表2 Bを残しました。 。 。この回答の仕組みを理解できない場合は、別の質問にテーブルとクエリの詳細を尋ねる必要があります。 –

+0

私はそれを働かせました。十字架全体が参加して私を少し投げた。ありがとう – blk99cobra

関連する問題