我永远不会使用distinct,但总是使用group by子句,distinct实际上是脏组,因为它不会输出相同的行。
为了传达列的性别,您必须在此处形成汇总,例如使用STRING_AGG(请参阅聚合/字符串函数https://docs.microsoft.com/en-us/sql/t-sql/functions/string-functions-transact-sql?view=sql-server-ver15)。
示例:
DECLARE @TableTest TABLE
(ID INT NOT NULL IDENTITY(1,1) PRIMARY KEY,ACCT VARCHAR(10) NOT NULL,DOC VARCHAR(10) NOT NULL,GENDER VARCHAR(10) NULL)
INSERT INTO @TableTest
(ACCT,DOC,GENDER)
VALUES
('xxx','123','M'),('xxx','F'),('yyy','456','M')
SELECT CONCAT(tt.ACCT,tt.DOC) as ACCTDOC,--tt.ACCT,--tt.DOC,STRING_AGG(tt.GENDER,'/') AS Genders
FROM @TableTest AS tt
GROUP BY tt.ACCT,tt.DOC
,
没有测试数据可以尝试,但是我希望以下查询对您有用:
SELECT *
FROM Table2 AS t2
WHERE NOT EXISTS
(
SELECT 1
FROM Table1 AS t1
WHERE t1.ACCT = t2.ACCT AND t1.DOC = t2.DOC
)
对于表2中的每一行,请使用两个指定的列检查同一行是否未出现在表1中。不过有个笔记;它仅显示表1中缺少的条目(我假设这是您想要的)。
本文链接:https://www.f2er.com/3151606.html