我是SQL的新手,并且只使用了大约4个月。但是我需要构建一个可以计算相似项目总数的存储过程(使用数字标识符,即计算总数E.ThisNumber Where E.ThatNumber = 'Whatever'
)
这是我到目前为止检索我需要的记录的代码:
SELECT *
FROM BarRevenueByProcedurePriceInfo
WHERE DeptID = '010.4730'
AND SegmentDateTime = '2013-11-30 00:00:00.000'
ORDER BY ProcedureID
这是输出:
ProcedureID/
RowUpdateTime Dept Code E.ThatNumber E.ThisNumber E.WhatIneed
2013-11-30 010.4730 4200028 108.15 108.15
2013-11-30 010.4730 4200028 18.18 126.33
2013-11-30 010.4730 4200028 63.63 189.81
2013-11-30 010.4730 4200069 5.00 5.00
2013-11-30 010.4730 4200069 5.01 10.01
2013-11-30 010.4730 4200069 6.00 16.01
注意当E.ThatNumber值与前一个条目不同时,计数如何重置。任何帮助将不胜感激。谢谢!
威廉哈利
答案 0 :(得分:0)
不是100%确定你需要什么,可能是这样:
SELECT *,
SUM(ThisNumber) OVER (PARTITION BY ProcedureID)
FROM BarRevenueByProcedurePriceInfo
WHERE DeptID = '010.4730'
AND SegmentDateTime = '2013-11-30 00:00:00.000'
ORDER BY ProcedureID
答案 1 :(得分:0)
SQL Server 2012支持累积总和:
SELECT *,
sum(thisnumber) over (partition by procedureId order by (select NULL)) as whatIneed
FROM BarRevenueByProcedurePriceInfo
WHERE DeptID = '010.4730' AND
SegmentDateTime = '2013-11-30 00:00:00.000'
ORDER BY ProcedureID;
在早期版本中,您需要使用相关子查询或加入聚合。
顺便说一句,行没有明显的排序。如果您正在进行累计求和,那么您应该有一个指定订单的列。