Tsql 子选择where子句标准
正在为一个类处理我的第一个ETL分配,并且需要转换的insert查询的帮助,特别是获取要插入到转换表中的authorID。我收到的数据是: 我的转换表有3列,Bookvarchar50、ISBNvarchar50和authorint。 正确的author值需要来自author表,该表具有: idint,FirstNamevarchar35,LastNamevarchar35 子选择上的where子句需要什么Tsql 子选择where子句标准,tsql,Tsql,正在为一个类处理我的第一个ETL分配,并且需要转换的insert查询的帮助,特别是获取要插入到转换表中的authorID。我收到的数据是: 我的转换表有3列,Bookvarchar50、ISBNvarchar50和authorint。 正确的author值需要来自author表,该表具有: idint,FirstNamevarchar35,LastNamevarchar35 子选择上的where子句需要什么 INSERT INTO TRANSFORM.NewBook SELECT
INSERT INTO TRANSFORM.NewBook
SELECT
nb.book,
ISBN,
(SELECT a.id
FROM Library.Author AS a
WHERE nb.Author = ????????? AS Authorid
FROM [EXTRACT].NewBook AS nb)
您需要执行连接以获取所需的数据,该数据看起来位于作者的姓名上,因此我尝试:
INSERT INTO TRANSFORM.NewBook
SELECT nb.book ,
nb.ISBN ,
a.id
FROM extract.newbook bn
JOIN library.author a
ON CONCAT_WS(' ' , a.firstname, a.lastName) = nb.author;
concat_ws适用于sqlserver 2017。您可以尝试CONCATa.firstname、、.lastName或a.firstname+''+a.lastName=nb.authorNewBook上有哪些列?对不起,Extract.NewBook有Bookvarchar50、ISBNvarchar50、批发商costvarchar50和authorvarchar50。看起来nb.author=CONCAT_WS''、a.firstname、a.lastName。。。传入数据中没有更多内容。00提升器,我在“,”附近收到了不正确的语法-插入到TRANSFORM.NewBook选择nb.book,ISBN,从Library中选择a.id。Author作为其中nb.Author='',a.FirstName,a.LastName作为AuthorId从[EXTRACT]中。NewBook作为nb启用Concat_WS函数需要做些什么吗?获取以下错误消息:Msg 195,级别15,状态10,第7行“CONCAT_WS”不是可识别的内置函数名。@ChrisM ah,它是一个较新的函数,因此可能不在您的服务器上。你可以试试a.firstname+“”+a.lastName=nb。author@ChrisM你有没有没有没有姓或名的作者?@maSTAShuFu这是一个很好的问题。为了解决这个问题,根据您的SQL版本,我们可以将整个过程包装在一个trim或ltrimrtrim@LordBaconPants您可以使用coalesce->coalesce firstname+''+lastname、isnulllastname、firstname