大家好,我有以下查询:
SELECT TOP(1) CommitmentLog.CommitAmt
FROM leveldetails
INNER JOIN CommitmentLog
ON leveldetails.App_ID = CommitmentLog.app_id
AND leveldetails.Intro_ID = '999'
AND leveldetails.Side = 'right'
AND CommitmentLog.flag != '1'
AND CommitmentLog.CommitNo NOT IN (SELECT commit_no
FROM binary_bal
WHERE Intro_ID = '999'
AND Side = 'right'
AND llevel BETWEEN 1 AND 100000) 第1行CommitAmt值: 1500
第二行CommitAmt值: 500
如果选择CommitmentLog.CommitAmt的前1和,则返回值为2000,而不是1500。
如果选择CommitmentLog.CommitAmt的前2和,返回值为2000,这是正确的。
如果我选择前1,那么和(CommitmentLog.CommitAmt)它应该返回1500和 如果我选择前2,那么sum(CommitmentLog.CommitAmt)应该返回1500 + 500 = 2000
发布于 2014-11-12 06:36:14
你想把你的结果集的顶部N和起来吗?尝尝这个
SELECT SUM(t1.CommitAmt) from (SELECT TOP(1) CommitmentLog.CommitAmt
FROM leveldetails
INNER JOIN CommitmentLog
ON leveldetails.App_ID = CommitmentLog.app_id
AND leveldetails.Intro_ID = '999'
AND leveldetails.Side = 'right'
AND CommitmentLog.flag != '1'
AND CommitmentLog.CommitNo NOT IN (SELECT commit_no
FROM binary_bal
WHERE Intro_ID = '999'
AND Side = 'right'
AND llevel BETWEEN 1 AND 100000)
) AS t1https://stackoverflow.com/questions/26880549
复制相似问题