sql-server - T-SQL:我需要获取字符串列中的缺失值
问题描述
在我的查询中,我需要在字符串中查找缺失的值。我的查询返回code_grille_talend
和 缺失值的数量。现在,我需要获取丢失的值来完成我的工作
我在 SQL Server 中尝试了一个查询,该查询返回code_grille_talend
包含所有值和缺失值的数量
select top 1
(G.[code_grille_talend]),
count(C.code) as counter
from
[dbo].[code] G
left join
[dbo].[codeT] C on G.code_grille_talend not like '%' + LTRIM(RTRIM(C.code)) + '%'
group by
G.code_grille_talend
having
len(g.code_grille_talend) + count(C.code) <= 20 or count(C.code) = 0
order by
len(g.code_grille_talend) desc
如果 c.count>0(1,2 等),此查询返回 top1 代码格栅和缺失值的数量 .now。我需要知道错过了哪个值(代码)。像 1,2,4,7 这样的代码和像 147582, 26854789, 2579365, 478529 这样的 code_grille_talend
解决方案
如果您有一个包含所需代码的表格和一个包含实际代码的表格,您可以使用下面的查询查看缺少哪些所需代码。
CREATE TABLE #requiredValues ([Code] VARCHAR(MAX))
INSERT INTO
#requiredValues
VALUES
('1'),
('2')
CREATE TABLE #values ([Code] VARCHAR(MAX))
INSERT INTO
#values
VALUES
('12'),
('2'),
('3')
SELECT
#values.[Code], STRING_AGG(#requiredValues.[Code], ', ')
FROM
#requiredValues
RIGHT JOIN
#values ON #values.[Code] NOT LIKE '%' + #requiredValues.[Code] + '%'
GROUP BY
#values.[Code]
-- Without STRING_AGG: for SQL versions pre-2017.
SELECT
#values.[Code]
,STUFF((
SELECT
', ' + #requiredValues.[Code]
FROM
#requiredValues
WHERE
#values.[Code] NOT LIKE '%' + #requiredValues.[Code] + '%'
FOR XML PATH ('')),1,2,'')
FROM
#values
GROUP BY
#values.[Code]
DROP TABLE #requiredValues
DROP TABLE #values
推荐阅读
- mysql - 有没有办法加入有很多关系表并根据类型在多个列上聚合
- powershell - 如何在 PowerShell 上为每个循环运行并行
- swift - streamingContentKeyRequestData 返回错误 Domain=NSOSStatusErrorDomain 代码=-12158
- excel - 将 Excel 表格格式的日期和时间数据导入 C++ 程序
- plotly - Plotly - 第二个数字覆盖第一个数字
- python - 简单用例的闭包
- protocol-buffers - 映射是否向后兼容重复的键值对?
- bash - 如何在几秒钟内创建大型 CSV?
- python - 如何分别获取鼠标的 x 和 y 坐标?
- ssl - 如何在 Go 中缓存/重用 TLS 连接