SQL 连接多列 + "|"加入

SQL Concat multiple columns + "|" for Join

正在尝试连接列和管道 (|) 以创建第一个左外连接。

dbo.[SFI Barcode Entry].MapValue = the concatenated values of 3 columns with pipes in between

我的查询:

SELECT dbo.[U1$Job Task].[Job No_] AS Job, 
       dbo.[U1$Job Task].[Job Task No_] AS [Cost Code], 
       dbo.[U1$Job Task].Description, 
       dbo.[SFI Barcode Entry].MapID
FROM   dbo.[U1$Job Task] 
LEFT OUTER JOIN dbo.[SFI Barcode Entry] ON CONCAT(dbo.[U1$Job Task].[Job No_], "|", dbo.[U1$Job Task].[Job Task No_], "|", dbo.[U1$Job Task].[Job Task Type]) = dbo.[SFI Barcode Entry].MapValue 
LEFT OUTER JOIN dbo.U1$Job ON dbo.[U1$Job Task].[Job No_] = dbo.U1$Job.No_
WHERE  (dbo.U1$Job.Status = 2)

Error messages: Msg 207, Level 16, State 1, Line 3
Invalid column name '|'.
Msg 207, Level 16, State 1, Line 3
Invalid column name '|'.

在 SSMS 2017 中创建视图时,它会尝试添加功能命令并更改“|”到 [|]。我最终需要在视图中查询 运行。

通常,"" 用于对象名称。您的查询应如下所示(将“|”替换为“|”):

SELECT dbo.[U1$Job Task].[Job No_] AS Job, 
       dbo.[U1$Job Task].[Job Task No_] AS [Cost Code], 
       dbo.[U1$Job Task].Description, 
       dbo.[SFI Barcode Entry].MapID
FROM   dbo.[U1$Job Task] LEFT OUTER JOIN dbo.[SFI Barcode Entry] 
ON concat( concat(concat (dbo.[U1$Job Task].[Job No_], '|'), concat (dbo.[U1$Job Task].[Job Task No_], '|')), dbo.[U1$Job Task].[Job Task Type])= dbo.[SFI Barcode Entry].MapValue 
LEFT OUTER JOIN dbo.U1$Job 
ON dbo.[U1$Job Task].[Job No_] = dbo.U1$Job.No_
WHERE (dbo.U1$Job.Status = 2)