SQL Server Management Studio - 计算正确的总数
SQL Server Management Studio - Calculating Correct Total
我在 SQL 服务器 table 中有一列的值如下:
ID Value Item#
-------------------
101 10 Apples
102 20 Apples
102-01 22 Apples
102-02 23 Apples
102-03 21 Apples
103 20 Apples
103-01 15 Apples
如何编写查询以获得正确的值总计?
对于给定的示例,仅应采用以下值:101
、102-03
、103-01
。
正确的总和应该是46
。
我尝试在 where 子句中使用 like 和 contains 关键字。它没有帮助。
Group by 和 Max 弄乱了总数。
并且仅使用 sum(values)
就给出了所有错误的总和
据我了解你的问题,你想按其 id 的前缀(前 3 个字符)对记录进行分组,并将每组具有最高后缀的记录的值相加(如果有超过一条记录)。
您可以使用row_number()
,然后过滤和求和:
select sum(value) total_value
from (
select
t.*,
row_number() over(partition by left(id, 3) order by id desc) rn
from mytable t
) t
where rn = 1
我在 SQL 服务器 table 中有一列的值如下:
ID Value Item#
-------------------
101 10 Apples
102 20 Apples
102-01 22 Apples
102-02 23 Apples
102-03 21 Apples
103 20 Apples
103-01 15 Apples
如何编写查询以获得正确的值总计?
对于给定的示例,仅应采用以下值:101
、102-03
、103-01
。
正确的总和应该是46
。
我尝试在 where 子句中使用 like 和 contains 关键字。它没有帮助。 Group by 和 Max 弄乱了总数。
并且仅使用 sum(values)
就给出了所有错误的总和
据我了解你的问题,你想按其 id 的前缀(前 3 个字符)对记录进行分组,并将每组具有最高后缀的记录的值相加(如果有超过一条记录)。
您可以使用row_number()
,然后过滤和求和:
select sum(value) total_value
from (
select
t.*,
row_number() over(partition by left(id, 3) order by id desc) rn
from mytable t
) t
where rn = 1