首页 > 解决方案 > 在 MSSQL 中将 1 个表转换为 2 个表

问题描述

我有一张表有这样的数据:

但是现在,我需要像这样转换它们

这个叫vendor桌子

这个叫供应商fueltype

我觉得我可以直接使用 select from insert into 将我拥有的工作表移动到fueltype表,但不知何故我想不出一个好方法来制作第二个表中的所有记录。我在想如果表中有重复的名称,请选择第一个或类似的名称。

谁能给点建议?

在此处输入图像描述

标签: sqlsql-server

解决方案


根据您给我们的内容,以下内容应该有效:

CREATE TABLE #Original (
     VendorName     varchar(100)
    ,[Description]  varchar(100)
    ,FuelType       varchar(100)
    )

CREATE TABLE Vendor (
    VendorName  varchar(100)
    )

CREATE TABLE VendorFuelType(
     VendorName varchar(100)
    ,FuelType   varchar(100)
    )

INSERT INTO #Original (VendorName, [Description], FuelType)
    VALUES   ('Avery', 'Wood', 'Wood')
            ,('Beta', 'LP Gas', 'LP Gas')
            ,('Clever', 'Oil,Kerosene,LP Gas', 'Oil')
            ,('Clever', 'Oil,Kerosene,LP Gas', 'Kerosene')
            ,('Clever', 'Oil,Kerosene,LP Gas', 'lP Gas')

INSERT INTO Vendor(VendorName)
    SELECT  DISTINCT VendorName 
    FROM    #Original


INSERT INTO VendorFuelType(VendorName, FuelType)
    SELECT  VendorName, FuelType
    FROM    #Original

尽管该示例没有设置主键/外键,但假定它们会存在,因此首先填充 Vendor 表,然后是 VendorFuelType 表的原因。

如评论中所述,供应商表只是供应商名称SELECT DISTINCT上的一个。


推荐阅读