sql - 在 MSSQL 中将 1 个表转换为 2 个表
问题描述
我有一张表有这样的数据:
- 供应商名称 描述 FuelType
- 艾弗里木木
- 贝塔液化石油气 液化石油气
- 聪明的油,煤油,液化石油气
- 聪明的油,煤油,液化石油气煤油
- 聪明的油,煤油,液化石油气 LP Gas
但是现在,我需要像这样转换它们
这个叫vendor
桌子
- 供应商名称:
- 艾弗里
- 贝塔
- 聪明的
这个叫供应商fueltype
表
- 供应商名称燃料类型
- 艾弗里伍德
- 贝塔液化石油气
- 聪明的油
- 聪明的煤油
- 聪明的液化石油气
我觉得我可以直接使用 select from insert into 将我拥有的工作表移动到fueltype表,但不知何故我想不出一个好方法来制作第二个表中的所有记录。我在想如果表中有重复的名称,请选择第一个或类似的名称。
谁能给点建议?
解决方案
根据您给我们的内容,以下内容应该有效:
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
上的一个。
推荐阅读
- java - Bitronix 事务不适用于 JMS 队列
- python - 具有两个数据框列作为参数的 Lambda
- javascript - 填充网格后剑道网格的居中
- c++ - Doxygen 创建指向特定代码行的链接
- python - 用Python中的字符串替换包含子字符串的字符串
- google-bigquery - 在 where 子句 Bigquery 中使用聚合函数更新表
- jenkins - Kubernetes Pod 模板 Pre Pod,Service,Deployment yaml 文件
- javascript - Computer Guess A Number JavaScript
- javascript - Lambda forgot how to interpret JavaScript?
- terraform - 如何在 Terraform 存储桶策略中使用存储桶作为变量?