【发布时间】:2021-07-11 18:03:37
【问题描述】:
对不起,如果这看起来很漫无边际,我通常不是一个试图解决问题的数据库人员。
我有两张表cases和legal_entity这两张表上的数据是这样的
legal_entity
| first_name | last_name | address_1_zip |
|---|---|---|
| Maria | Munoz | 33122 |
| John | Glenn | 10003 |
| Melissa | Johnson | 90210 |
cases
| style | case_number | create_date |
|---|---|---|
| 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 |
我要做的是将legal_entity 表中的last_name 和first_name 字段与它们之间的逗号组合,并将其与cases 表中的style 字段匹配(包含) .基本上上个月的一切。这是我正在使用的查询
SELECT
C.[case_number] AS CaseNumber,
C.[style] AS FullName,
LE.[first_name] AS FirstName,
LE.[last_name] AS LastName,
LE.[address_1_zip] AS ZipCode,
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) LIKE 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
我遇到的问题是,C.style 包含的信息不仅仅是 LastName,FirstName
(例如Johnson, Melissa (DNY))
即使您将 = 更改为 LIKE,它也不匹配/加入。
任何帮助将不胜感激。
编辑
完整的工作查询
SELECT
C.[case_number] AS CaseNumber,
C.[style] AS FullName,
LE.[first_name] AS FirstName,
LE.[last_name] AS LastName,
LE.[address_1_zip] AS ZipCode,
CONCAT(LE.last_name,', ',LE.first_name, '%') AS CombinedName
FROM CPSQL.dbo.legal_entity AS LE
JOIN CPSQL.dbo.cases as C ON
C.style LIKE CONCAT(LE.last_name,', ',LE.first_name, '%')
WHERE C.create_date >= Convert(datetime, '2021-03-01') AND C.create_date <= Convert(datetime, '2021-04-16')
ORDER BY C.create_date
【问题讨论】:
-
sql server 2017 中引入的CONCAT_WS,为什么要标记2016?
标签: sql sql-server join concatenation