使用查找 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