错误的结果
所以我有两张桌子
具有列结构的订单表
+-------+---------+-------------+---------------+----------+
| PO | cashAmt | ClaimNumber | TransactionID | Supplier |
+-------+---------+-------------+---------------+----------+
| 12345 | 100 | 99876 | abc123 | 0101 |
| 12346 | 50 | 99875 | abc123 | 0102 |
| 12345 | 100 | 99876 | abc123 | 0101 |
+-------+---------+-------------+---------------+----------+
具有列结构的分段表
+----------+------------+-------------+---------------+
| PONumber | paymentAmt | ClaimNumber | TransactionID |
+----------+------------+-------------+---------------+
| 12345 | 100 | 99876 | abc123 |
| 12346 | 50 | 99875 | abc123 |
+----------+------------+-------------+---------------+
我正在执行的查询是
select sum(cashAmt) CheckAmount, count(ClaimNumber) TotalLines
FROM [order] with (nolock)
WHERE TransactionID='abc123'
union
select sum(paymentAmt) CheckAmount, count(ClaimNumber) TotalLines
from Staging with (nolock)
where TransactionID='abc123'
但由于其中一个表中存在重复,因此总和变得混乱。
我如何编辑,我只从订单表中获取唯一的,且总和是正确的
答案 0 :(得分:0)
假设表中的重复项没问题。
不确定为什么你没有使用锁,似乎不应该包含它。
您可以使用表变量来存储不同的值。您需要调整表变量中的数据类型以匹配表结构。
我还没有对下面的代码进行测试,但看起来应该是这样的。
DECLARE @OrderTmp TABLE (
cashAmt MyNumericColumn numeric(10,2)
, ClaimNumber int
, TransactionID Int
)
INSERT INTO @OrderTmp
select Distinct
cashAmt
,ClaimNumber
,TransactionID
FROM
[order]
WHERE TransactionID='abc123'
SELECT DISTINCT
select sum(cashAmt) CheckAmount, count(ClaimNumber) TotalLines
FROM @OrderTmp
where TransactionID='abc123'
union
select sum(paymentAmt) CheckAmount, count(ClaimNumber) TotalLines
from Staging
where TransactionID='abc123'
答案 1 :(得分:0)
首先问问自己为什么Orders表中有重复项?必须有他们在那里的原因。我会先解决这个问题。
除了问题之外,如果Orders表中的重复项有目的但是不考虑此特定查询,那么您应该能够通过简单地更改查询以使用{{1}来省略重复项在Orders表中的任何字段上都可以可靠地识别副本。
DISTINCT
等。