我只希望对sql server中不同ID的第一个值求和
我有这样的数据库:我只希望对sql server中不同ID的第一个值求和,sql,sql-server,Sql,Sql Server,我有这样的数据库: weekid overage type type2 504 400 x y 504 400 z y 503 200 x z 502 100 x x 502 100 x y 我想要的是把weekid 504的400和weekid 503的200和weekid 502的10
weekid overage type type2
504 400 x y
504 400 z y
503 200 x z
502 100 x x
502 100 x y
我想要的是把weekid 504的400和weekid 503的200和weekid 502的100相加,我不希望它和weekid 504或502的其他400相加
所以输出应该是sum(overage)=700
基本上,我想要的是这样做vbscript循环的东西
do until rs9.eof
if weekid<>rs.fields("weekid") then
weekid=rs.fields("weekid")
overage=overage+rs.fields("overage")
end if
rs.movenext
loop
do直到rs9.eof
如果Weekids.fields(“weekid”),那么
weekid=卢比字段(“weekid”)
overage=overage+rs.字段(“overage”)
如果结束
下一个
环
但是,在查询中需要这样做,最简单的sql查询是什么
此外,我的sql server版本似乎不支持行数,这取决于第一行的含义-数据没有固有的顺序。 当您决定如何订购物品时,可以调整下面的
orderby
子句
select sum(overage)
from
(Select overage, row_number() over (partition by weekid order by type, type2) rn
from yourtable
) v
where rn=1
您可以随机选择一个值:
select sum(overage)
from (select t.*,
row_number() over (partition by weekid order by newwid()) as seqnum
from t
) t
where seqnum = 1
如果您知道所有值都是相同的,您可能更喜欢聚合:
select sum(overage)
from (select weekid, max(overage) as overage
from t
group by weekid
) t
不要执行以下操作:
select sum(distinct overage)
虽然这是有效的SQL,但您将失去数周的相同值
如果相同weekids的值始终相同,则使用a)。对于同一周的孩子有不同的超龄值的情况: a) 如果需要在总和中包含相同值的不同值:
SELECT SUM([Overage])
FROM ( SELECT DISTINCT
[WeekId] ,
[Overage]
FROM [dbo].[OverageTable]
) tmp
SELECT SUM([Overage])
FROM ( SELECT [WeekId] ,
MAX([Overage]) AS [Overage]
FROM [dbo].[OverageTable]
GROUP BY [WeekId]
) tmp
a) 如果只需要相同值的不同值的最大值即可包含在总和中:
SELECT SUM([Overage])
FROM ( SELECT DISTINCT
[WeekId] ,
[Overage]
FROM [dbo].[OverageTable]
) tmp
SELECT SUM([Overage])
FROM ( SELECT [WeekId] ,
MAX([Overage]) AS [Overage]
FROM [dbo].[OverageTable]
GROUP BY [WeekId]
) tmp
“row_number()不是受支持的聚合函数”显然,我的sql server版本是由第一行设置为oldby我的意思是给定的第一行(或仅一行),对于每个不同的weekids@kricket-这是应该包含在您的问题中的关键信息。虽然我们大多数人似乎都认为这是事实(或有可能),但这可能会导致“错误”的结果。当两个同一周的孩子有不同的超龄值时,你需要什么?您是否需要该周孩子的最高超额年龄,或者您希望将两个超额年龄都包括在总数中?根据您的问题标题,第一个是什么意思?任何值,最大值,由某物第一次订购?请clarify@Kash对于每个不同的项目,每个超额都是相同的weekid@the显示的第一行不需要排序。只有当
超期
对于给定的周末
的所有实例都相同时,才有效-我们没有得到足够的信息来确定是否总是这样。这也是一种黑客行为,因为这是出于不同目的的利用行为。同意。因此,我在评论中也提出了同样的问题。无论如何,我已经给出了他可能寻找的两种可能的情况。