我知道我的主题有点稀疏,但对于我的生活,我无法弄清楚如何做到这一点。我可以在C#中实现这一点,但我对SQL语法感到困惑。我搜索和搜索,似乎无法找到我正在寻找的东西,因为我不理解我正在查看的一些SQL。
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
谢谢大家的帮助!
答案 0 :(得分: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;