Select 语句 returns 错误的结果
Select Statement returns wrong results
我有一个 returns 多列的子查询,里面有 row_number
当我尝试 select 只有两列时,它 returns 行号列中的错误结果
结果应该是
CheckKey
RowNum
1936
66
1936
81
但是 returns
CheckKey
RowNum
1936
66
1936
76
这是查询:
SELECT Z."CheckKey", Z."RowNum" FROM
(SELECT
X."Transaction Number",
X."Debit",
X."Credit",
X."Balance",
X."CardName",
X."Memo",
X."CheckNum",
X."CheckSum",
X."Canceled",
X."Account",
X."RefDate",
X."DueDate",
X."CheckKey",
row_number() OVER (ORDER BY X."RefDate" DESC) "RowNum",
CASE
WHEN (
X."StornoToTr" IS NOT NULL
AND X."Deposited" = 'C'
) THEN 'Deposited'
WHEN X."Deposited" = 'N' THEN 'Canceled'
ELSE X."Status"
END "Status"
FROM CheckKeys X)Z
WHERE Z."CheckKey" = '1936'
正如asentx所说
仅按 RefDate 排序,因此 RefDate 的相同值按随机顺序排序。这就是为什么当我按“交易编号”之类的顺序添加另一列时结果变得稳定的原因
谢谢大家
我有一个 returns 多列的子查询,里面有 row_number
当我尝试 select 只有两列时,它 returns 行号列中的错误结果
结果应该是
CheckKey | RowNum |
---|---|
1936 | 66 |
1936 | 81 |
但是 returns
CheckKey | RowNum |
---|---|
1936 | 66 |
1936 | 76 |
这是查询:
SELECT Z."CheckKey", Z."RowNum" FROM
(SELECT
X."Transaction Number",
X."Debit",
X."Credit",
X."Balance",
X."CardName",
X."Memo",
X."CheckNum",
X."CheckSum",
X."Canceled",
X."Account",
X."RefDate",
X."DueDate",
X."CheckKey",
row_number() OVER (ORDER BY X."RefDate" DESC) "RowNum",
CASE
WHEN (
X."StornoToTr" IS NOT NULL
AND X."Deposited" = 'C'
) THEN 'Deposited'
WHEN X."Deposited" = 'N' THEN 'Canceled'
ELSE X."Status"
END "Status"
FROM CheckKeys X)Z
WHERE Z."CheckKey" = '1936'
正如asentx所说 仅按 RefDate 排序,因此 RefDate 的相同值按随机顺序排序。这就是为什么当我按“交易编号”之类的顺序添加另一列时结果变得稳定的原因
谢谢大家