在STRING_SPLIT中使用Where IN并在SQL Server 2016中使用汇总计数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在STRING_SPLIT中使用Where IN并在SQL Server 2016中使用汇总计数相关的知识,希望对你有一定的参考价值。

我有一个简单的Select语句:

SELECT TOP (100) PERCENT 
    COUNT(*) AS AuthorCount, PMID, dbid
FROM  
    dbo.[Publication.PubMed.Author]
GROUP BY 
    PMID, dbid
HAVING 
    (dbid = 500) AND (COUNT(*) > 1)
ORDER BY 
    PMID

此语句返回带有AuthorCount的所有行。我只想用逗号分隔的字符串中具有PMID号的记录来过滤它]

例如添加

WHERE CAST(PMID AS NVARCHAR(15)) IN STRING_SPLIT('28049775,28864564,28049810,27921451,29043651,30001498,27702896,27897198',',')

我查看了C.通过https://docs.microsoft.com/en-us/sql/t-sql/functions/string-split-transact-sql?view=sql-server-2017处的值进行聚合,但这没有帮助

我只希望以逗号分隔的字符串结尾的行子集结束。

感谢

[我有一个简单的Select语句:SELECT TOP(100)PERCENT COUNT(*)AS AuthorCount,PMID,dbid from dbo。[Publication.PubMed.Author] GROUP BY PMID,dbid HAVING(dbid = 500)AND(。 。

答案

您可以使用以下技巧,使您可以使用LIKE针对逗号分隔的列表搜索列值:

以上是关于在STRING_SPLIT中使用Where IN并在SQL Server 2016中使用汇总计数的主要内容,如果未能解决你的问题,请参考以下文章

可以在 VIEW 中使用 String_Split 吗?

在 where 子句中使用解码,并带有“in”

String_Split 使用 SQL 以逗号分隔列

使用string_split从多个列创建行

在MySQL存储过程中的WHERE子句中使用IN param

如何加入“IN”结果并检查“where” active = 1?