【发布时间】:2015-01-08 22:13:28
【问题描述】:
大家好,我有以下问题:
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)
第一行 CommitAmt 值:1500
第二行 CommitAmt 值:500
如果我选择 CommitmentLog.CommitAmt 的前 1 个总和,则返回值为 2000 而不是 1500
如果我选择 CommitmentLog.CommitAmt 的前 2 个总和,则返回值 2000 是正确的
如果我选择前 1 则 sum(CommitmentLog.CommitAmt) 它应该返回 1500 并且
如果我选择前 2 名 sum(CommitmentLog.CommitAmt) 它应该返回 1500 + 500 = 2000
【问题讨论】:
-
"Top" 在计算结果集之后过滤前 N 行。它不会影响结果集本身。
-
请提供样品
-
CommitmentLog.CommitAmt 在表中有多个值。我想和 top(1)、top(2) 等相加......如果我对 top(1) 求和,那么我得到的结果不正确,就像查询正在运行一样 (top(2)
-
对值求和的位置。
-
sum(commitmentlog.commitamt)
标签: mysql sql sql-server