我的工作表中包含这样的数据:
但是现在,我需要像这样转换它们
这个叫vendor
的桌子
此表称为供应商fueltype
表
我觉得我可以直接使用insert into的选择来将我需要的工作表移动到燃料类型表,但是以某种方式我想不出在第二个表中进行所有记录的好方法。我在想如果表中有重复的名称,请选择第一个,或类似的名称。
任何人都可以提些建议吗?
答案 0 :(得分:0)
根据您提供给我们的内容,以下方法应该起作用:
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表的原因。
如注释中所述,Vendor表只是VendorName上的SELECT DISTINCT
。
答案 1 :(得分:0)
对于MySQL,您可以简单地使用以下查询插入到另一个表中:
INSERT INTO Vendor(VendorName) SELECT VendorName FROM OriginalTable;
INSERT INTO VendorFuelType(VendorName, FuelType) SELECT VendorName, FuelType
FROM OriginalTable;
这也有助于获取重复的条目。另一种方法是使用DB Cursor,它也会给您相同的结果。
这是a link对于游标。
对于SQL Server,您可以使用上面的查询,但对于Cursor,则需要进行一些更改