Sql-Server

CONCAT_WS 上的列名無效

  • April 28, 2021

抱歉,如果這看起來很漫無邊際,我通常不是一個試圖解決問題的數據庫人員。

我有兩個表caseslegal_entity這兩個表上的數據看起來像這樣

legal_entity

cases

我想要做的是將表中的last_nameandfirst_name欄位與它們之間的逗號組合,並將其與表中的欄位legal_entity匹配(包含)。基本上上個月的一切。這是我正在使用的查詢style``cases

SELECT
   first_name, last_name, address_1_zip,
   CONCAT_WS(',', last_name,first_name) AS CombinedName
FROM
   CPSQL.dbo.legal_entity AS LE
INNER JOIN CPSQL.dbo.cases as C ON LE.CombinedName=C.style
WHERE C.create_date >= Convert(datetime, '2021-03-01') AND C.create_date <= Convert(datetime, '2021-04-16')
ORDER BY C.create_date

我遇到的問題是它似乎不喜歡 LE.CombinedName 所以我不確定如何針對案例表中的樣式列引用連接的字元串。

任何幫助將不勝感激。

您只能使用連接表中的列,或者在您的情況下使用它的連接版本

SELECT
   first_name, last_name, address_1_zip,
   CONCAT_WS(',', last_name,first_name) AS CombinedName
FROM
   CPSQL.dbo.legal_entity AS LE
INNER JOIN CPSQL.dbo.cases as C ON CONCAT_WS(', ', LE.last_name,LE.first_name)=C.style
WHERE C.create_date >= Convert(datetime, '2021-03-01') AND C.create_date <= Convert(datetime, '2021-04-16')
ORDER BY C.create_date
CREATE TABLE legal_entity
    ([first_name] varchar(7), [last_name] varchar(7), [address_1_zip] int)
;
    
INSERT INTO legal_entity
    ([first_name], [last_name], [address_1_zip])
VALUES
    ('Maria', 'Munoz', 33122),
    ('John', 'Glenn', 10003),
    ('Melissa', 'Johnson', 90210)
;
CREATE TABLE cases
    ([style] varchar(22), [case_number] varchar(7), [create_date] varchar(23))
;
    
INSERT INTO cases
    ([style], [case_number], [create_date])
VALUES
    ('Munoz, Maria', 'SL12345', '2021-03-01 11:45:26.657'),
    ('Glenn, John', 'SL45678', '2021-03-02 12:10:14.552'),
    ('Johnson, Melissa (DNY)', 'SG42561', '2021-04-10 01:06:10.214')
;
SELECT
    first_name, last_name, address_1_zip,
    CONCAT_WS(',', last_name,first_name) AS CombinedName
FROM
    legal_entity AS LE
INNER JOIN cases as C ON CONCAT_WS(', ', LE.last_name,LE.first_name)=C.style
WHERE C.create_date >= Convert(datetime, '2021-03-01') AND C.create_date <= Convert(datetime, '2021-04-16')
ORDER BY C.create_date
GO
名字 | 姓氏 | 地址_1_zip | 組合名稱
:--------- | :-------- | ------------: | :-----------
瑪麗亞 | 穆尼奧斯 | 33122 | 穆尼奧斯,瑪麗亞
約翰 | 格倫 | 10003 | 格倫,約翰 

db<>在這裡擺弄

CREATE TABLE legal_entity
    ([first_name] varchar(7), [last_name] varchar(7), [address_1_zip] int)
;
    
INSERT INTO legal_entity
    ([first_name], [last_name], [address_1_zip])
VALUES
    ('Maria', 'Munoz', 33122),
    ('John', 'Glenn', 10003),
    ('Melissa', 'Johnson', 90210)
;
GO
CREATE TABLE cases
    ([style] varchar(22), [case_number] varchar(7), [create_date] varchar(23))
;
    
INSERT INTO cases
    ([style], [case_number], [create_date])
VALUES
    ('Munoz, Maria', 'SL12345', '2021-03-01 11:45:26.657'),
    ('Glenn, John', 'SL45678', '2021-03-02 12:10:14.552'),
    ('Johnson, Melissa (DNY)', 'SG42561', '2021-04-10 01:06:10.214')
;
GO
SELECT
    first_name, last_name, address_1_zip,
    CONCAT_WS(',', last_name,first_name) AS CombinedName
FROM
    legal_entity AS LE
INNER JOIN cases as C ON PATINDEX( CONCAT( LE.last_name,', ',LE.first_name,'%'),C.style) &gt; 0
WHERE C.create_date &gt;= Convert(datetime, '2021-03-01') AND C.create_date &lt;= Convert(datetime, '2021-04-16')
ORDER BY C.create_date
GO
名字 | 姓氏 | 地址_1_zip | 組合名稱 
:--------- | :-------- | ------------: | :--------------
瑪麗亞 | 穆尼奧斯 | 33122 | 穆尼奧斯,瑪麗亞 
約翰 | 格倫 | 10003 | 格倫,約翰 
梅麗莎 | 約翰遜 | 90210 | 約翰遜,梅麗莎

db<>在這裡擺弄

引用自:https://dba.stackexchange.com/questions/289935