使用查找 table 填充 table
Populate table using lookup tables
我正在尝试从单个 MS SQL 服务器 table 中提取数据,该服务器使用 nvarchar(MAX) 作为几列的数据类型并将其插入 table 它使用 int 作为对应的 nvarchar(MAX) 数据的数据类型。我有几个 tables(查找 tables?)来提供 int 值。
table的设计如下:
MobileClientTable(来源table)
查找天气
查找区域
目的地表
一些示例数据:
MobileClientTable
查找天气
查找区域
所以我想要的是目标 table 中的行,如下所示:
ID Area Weather Details
1 4 1 None
其中区域和天气的 4 和 1 已从查找 tables 中获得。
我的 SQL 有点生疏,但我已经做到了 SQL 声明:
USE [ETLTest]
GO
INSERT INTO DestinationTable(ID, Area, Weather, Details) VALUES
(
(SELECT ID FROM dbo.MobileClientTable),
(SELECT ID FROM dbo.LookupArea WHERE Area = dbo.MobileClientTable.Area),
(SELECT ID FROM dbo.LookupWeather WHERE Weather = dbo.MobileClientTable.Weather,
(SELECT AnyOtherDetails FROM dbo.MobileClientTable)
);
当然,语法不正确。我收到以下错误:
Msg 156, Level 15, State 1, Line 6
Incorrect syntax near the keyword 'SELECT'.
Msg 102, Level 15, State 1, Line 6
Incorrect syntax near ')'.
Msg 102, Level 15, State 1, Line 7
Incorrect syntax near '+'.
Msg 102, Level 15, State 1, Line 9
Incorrect syntax near ')'.
我哪里错了?
values
不是必需的,因为正在使用 select
。
连接表格以将所需的值插入到相应的列中。
INSERT INTO DestinationTable(ID, Area, Weather, Details)
SELECT mc.ID , a.id, w.id, mc.anyotherdetails
FROM dbo.MobileClientTable mc
join dbo.LookupWeather w on w.Weather = mc.Weather
join dbo.LookupArea a on a.Area = mc.Area
INSERT INTO DestinationTable(ID, Area, Weather, Details)
SELECT a.ID, b.Area, c.Weather, d.AnyOtherDetails
FROM dbo.MobileClientTable a
JOIN dbo.LookupArea b ON a.Area=b.Area
JOIN dbo.LookupWeather c ON c.Weather = a.Weather
我正在尝试从单个 MS SQL 服务器 table 中提取数据,该服务器使用 nvarchar(MAX) 作为几列的数据类型并将其插入 table 它使用 int 作为对应的 nvarchar(MAX) 数据的数据类型。我有几个 tables(查找 tables?)来提供 int 值。
table的设计如下:
MobileClientTable(来源table)
查找天气
查找区域
目的地表
一些示例数据:
MobileClientTable
查找天气
查找区域
所以我想要的是目标 table 中的行,如下所示:
ID Area Weather Details
1 4 1 None
其中区域和天气的 4 和 1 已从查找 tables 中获得。
我的 SQL 有点生疏,但我已经做到了 SQL 声明:
USE [ETLTest]
GO
INSERT INTO DestinationTable(ID, Area, Weather, Details) VALUES
(
(SELECT ID FROM dbo.MobileClientTable),
(SELECT ID FROM dbo.LookupArea WHERE Area = dbo.MobileClientTable.Area),
(SELECT ID FROM dbo.LookupWeather WHERE Weather = dbo.MobileClientTable.Weather,
(SELECT AnyOtherDetails FROM dbo.MobileClientTable)
);
当然,语法不正确。我收到以下错误:
Msg 156, Level 15, State 1, Line 6
Incorrect syntax near the keyword 'SELECT'.
Msg 102, Level 15, State 1, Line 6
Incorrect syntax near ')'.
Msg 102, Level 15, State 1, Line 7
Incorrect syntax near '+'.
Msg 102, Level 15, State 1, Line 9
Incorrect syntax near ')'.
我哪里错了?
values
不是必需的,因为正在使用 select
。
连接表格以将所需的值插入到相应的列中。
INSERT INTO DestinationTable(ID, Area, Weather, Details)
SELECT mc.ID , a.id, w.id, mc.anyotherdetails
FROM dbo.MobileClientTable mc
join dbo.LookupWeather w on w.Weather = mc.Weather
join dbo.LookupArea a on a.Area = mc.Area
INSERT INTO DestinationTable(ID, Area, Weather, Details)
SELECT a.ID, b.Area, c.Weather, d.AnyOtherDetails
FROM dbo.MobileClientTable a
JOIN dbo.LookupArea b ON a.Area=b.Area
JOIN dbo.LookupWeather c ON c.Weather = a.Weather