字段减法sql server
Posted
技术标签:
【中文标题】字段减法sql server【英文标题】:field subtraction sql server 【发布时间】:2021-10-14 10:12:42 【问题描述】:如果我想将字段彼此相减,
即在 A 中有 11 个字段被描述为“Faktura zakupu”,在 B 中有 5 个字段被描述为“Faktura zakupu”。我想以 6 项 'Faktura zakupu' (11-5 = 6) 的形式返回记录
我尝试了 EXCEPT 操作,但它没有返回想要的结果
我需要执行什么操作?
【问题讨论】:
您如何确定 table1 第一行中的(Faktura zakupu, Original)
应该与 table2 中第一行(而不是任何其他行)中的 (Faktura zakupu, Original)
匹配?
@SalmanA 没有id就没有这种可能吗?
如果您在两个表中都有 id 并说表 A 中的 id #1 取消了表 2 中的 id#1,那么这将起作用。但我不认为你有这样的 id。
这能回答你的问题吗? Alternative for "Except All" in SQL Server
【参考方案1】:
您可以将行号添加到两个表中的每一行。然后 SQL Server 可以确定表 A 中的第一个 (Faktura zakupu, Original)
与表 B 中的第一个 (Faktura zakupu, Original)
重复,并在 EXCEPT
操作期间将其删除:
SELECT Name, StatusReq, ROW_NUMBER() OVER (PARTITION BY Name, StatusReq ORDER BY (SELECT NULL))
FROM a
EXCEPT
SELECT Name, StatusReq, ROW_NUMBER() OVER (PARTITION BY Name, StatusReq ORDER BY (SELECT NULL))
FROM b
它将从表 A... 返回 6 行,编号为 6 到 11。
【讨论】:
以上是关于字段减法sql server的主要内容,如果未能解决你的问题,请参考以下文章