Sql server 从两行中标识唯一值

Sql server 从两行中标识唯一值,sql-server,Sql Server,可以为一个帐号分配多个帐号名。由于数据库中有一百万行,我想了解如何查询只分配给一个帐户的帐户。请参见下面的示例数据: 账户100100500650250250600400400 帐户名ABA,DSA,ABA,DSA,ABA,DSA,DSA,DSA,ABA,ABA 查询的结果应该是帐户500650400,因为这些帐户只分配了一个帐户名 帐户100和250分配了多个帐户名。如何筛选仅分配了一个帐户名的帐户号?请提供帮助,这是上面评论中提到的方法 select account_num from you

可以为一个帐号分配多个帐号名。由于数据库中有一百万行,我想了解如何查询只分配给一个帐户的帐户。请参见下面的示例数据:

账户100100500650250250600400400 帐户名ABA,DSA,ABA,DSA,ABA,DSA,DSA,DSA,ABA,ABA

查询的结果应该是帐户500650400,因为这些帐户只分配了一个帐户名

帐户100和250分配了多个帐户名。如何筛选仅分配了一个帐户名的帐户号?请提供帮助,这是上面评论中提到的方法

select account_num
from your_table
group by account_num
having COUNT(*) = 1

有些人会对*计数表示不满,但如果这是一个临时的、非生产性的查询,我认为它在性能方面没有什么大不了的。

基于这个问题,我认为查询应该返回400500600650

根据问题中给出的数据,使用带有having count*=1子句的查询不会返回400

创建表帐户 AccountNumber int不为空 ,AccountName char3不为空 将AccountNumber、AccountName值插入帐户 100,“阿坝” ,100,'DSA' ,500,'ABA' ,650,'DSA' ,250,'ABA' ,250,'DSA' ,600,'DSA' ,400,'ABA' ,400,'ABA'; 以cte为例 选择AccountNumber ,帐户名 ,RowNumber=上面的行数 按帐号划分 按帐户名订购 来自帐户 按AccountNumber、AccountName分组 选择AccountNumber ,帐户名 来自cte 不存在的地方 选择1 从cte到我 其中i.AccountNumber=cte.AccountNumber 和i.RowNumber=2 ;
这将返回帐号和名称,其中帐号链接到多个名称 注意:在您的示例数据中,400号帐户链接到同一名称两次。。。 我不确定它是否应该算作链接到一个名字

这将包括帐号400

SELECT DISTINCT AccountNo, AccountName
FROM #Accounts a
WHERE (
SELECT COUNT(DISTINCT AccountName)
FROM #Accounts b
WHERE a.AccountNo = b.AccountNo) = 1
这将不包括子查询中的科目编号400无不同项

SELECT DISTINCT AccountNo, AccountName
FROM #Accounts a
WHERE (
SELECT COUNT(AccountName)
FROM #Accounts b
WHERE a.AccountNo = b.AccountNo) = 1

按分组查找,并在bol中查找。您的数据结构如何?由于您有一个多对多关系…您是否有一个表用于AcctNum,一个表用于AcctName,以及一个中间查找表来匹配这些表?不幸的是,这只是一个包含所有帐户和帐户名称的表。有人能给我看一个语法示例吗?