T-SQL:我需要获取字符串列中的缺失值

时间:2019-03-24 14:29:40

标签: sql-server tsql

在我的查询中,我需要在字符串中查找缺失的值。我的查询返回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这样的代码 以及code_grille_talend,例如147582,26854789、2579365、478529

1 个答案:

答案 0 :(得分:0)

如果您有一个包含必需代码的表和一个包含实际代码的表,则可以通过以下查询查看缺少哪些必需代码。

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