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)
我哪里错了?
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)
| 归档时间: |
|
| 查看次数: |
610 次 |
| 最近记录: |