使用查找表填充表

bar*_*rry 2 sql sql-server lookup-tables

我正在尝试从单个MS SQL Server表中提取数据,该表使用nvarchar(MAX)作为几列的数据类型,并将其插入到使用整数作为相应nvarchar(MAX)数据的数据类型的表中.我有几个表(查找表?)来提供int值.

表格具有以下设计:

MobileClientTable(源表)

在此输入图像描述

LookupWeather

在此输入图像描述

LookupArea

在此输入图像描述

destinationTable会

在此输入图像描述

一些样本数据:

MobileClientTable

在此输入图像描述

LookupWeather

在此输入图像描述

LookupArea

在此输入图像描述

所以我想要的是Destination表中的行,如下所示:

ID   Area   Weather   Details
1    4      1         None
Run Code Online (Sandbox Code Playgroud)

其中区域和天气的4和1已从查找表中获得.

我的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)
    );
Run Code Online (Sandbox Code Playgroud)

当然,语法不正确.我收到以下错误:

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 ')'.
Run Code Online (Sandbox Code Playgroud)

我哪里错了?

Vam*_*ala 5

valuesselect正在使用时不需要.

加入表格以将所需的值插入相应的列中.

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
Run Code Online (Sandbox Code Playgroud)