【发布时间】:2021-11-19 21:31:11
【问题描述】:
我有一个表,其中包含两列的值不是唯一的,这些值是自动生成的,我无法对此做任何事情,无法编辑表、数据库或制作自定义函数。
考虑到这一点,我已经在 sql server 中解决了这个问题,但它包含一些 ms-access 中不存在的功能。
这些列是 Volume 和 ComponentID,这是我在 sql 中的代码:
with rows as (
select row_number() over (order by volume) as rownum, volume
from test where componentid = 'S3')
select top 10
rowsMinusOne.volume, coalesce(rowsMinusOne.volume - rows.volume,0) as diff
from rows as rowsMinusOne
left outer join rows
on rows.rownum = rowsMinusOne.rownum - 1
样本数据:
58.29168
70.57396
85.67902
97.04888
107.7026
108.2022
108.3975
108.5777
109
109.8944
预期结果:
| Volume | diff |
|---|---|
| 58.29168 | 0 |
| 70.57396 | 12.28228 |
| 85.67902 | 15.10506 |
| 97.04888 | 11.36986 |
| 107.7026 | 10.65368 |
| 108.2022 | 0.4996719 |
| 108.3975 | 0.1952896 |
| 108.5777 | 0.1801834 |
| 109 | 0.4223404 |
| 109.8944 | 0.89431 |
我已经通过用 NZ 替换它来解决合并的一部分,我尝试使用 DCOUNT 来解决 row_number (How to show the record number in a MS Access report table?) 但我收到了它找不到函数的错误(我正在读取数据通过代码,这是我唯一能做的)。
我也尝试过,但是正如答案所说,我需要一个具有唯一值的列,我没有也无法创建 Microsoft Access query to duplicate ROW_NUMBER
【问题讨论】:
-
这里的 Mosy 人想要示例表数据,以及预期的结果,格式文本而不是图像。
-
@jarrlh 抱歉让我编辑我的问题。
-
在示例数据中看不到 ComponentID。我认为这两个字段一起不会产生唯一值。
-
您用 SQLServer 测试过,但数据不在 SQLServer 中?
-
@june7 我不使用 ComponenetID 显示任何数据,它仅用于过滤信息并且它们都不会产生唯一值。我已经使用 SQLServer 进行了测试,但数据在 ms-access(mdb 文件)中,我正在尝试做同样的事情,但不使用仅在 SQLServer 中可用的函数,如 ROW_Number 和 COALEASE,对于 coleaase,我知道函数等效,但是对于 ROW_Number,我没有找到任何可以帮助我的东西。