【发布时间】:2015-08-19 15:08:52
【问题描述】:
我一直在寻找文档和示例并尝试使这项工作发挥作用,但没有运气,所以我希望有人能指出我正确的方向。
我通过基于月份的查询从名为维护的表中获得了我的前 5 项,基本上给了我本月调用次数最多的前 5 个节点。
例如。前 5 名选择
select top 5
maint.node_id
,maint.sc_tot
FROM
server.dbo.maintenance as maint
where
maint.province_name='provname
and
maint.system_code='syscode'
and
maint.city_name='cityname'
and
(
year(maint.startdate)=2015
and
month(maint.startdate)=07
)
group by
maint.node_id
,maint.sc_tot
order by
sum(isnull(maint.je_tot,0)+isnull(maint.sc_tot,0)+isnull(maint.tt_tot,0))
desc
输出是
node_id sc_tot 节点1 30 节点2 28 节点3 27 节点4 23 节点5 23我现在需要做的是为每个节点选择当月调用的总和,而没有时间框架。基本上从同一个维护表中给我每个节点的历史和最终趋势。
例如。快速总结(不确切的细节)
节点开始日期 sc_tot 节点 1 1 月 10 日 节点1 2 月 15 日 节点 1 3 月 36 日 节点 2 1 月 14 日 节点2 2 月 22 日 ETC....此查询随后将在 sql 报告生成器中用于一些报告和绘图,但只要我有这些值就可以了。
这是否可能只用一个 sql 查询?
【问题讨论】:
-
你能把那个查询作为一个 cte 吗?然后创建更大的查询并在 node_id 上加入您的 cte
-
CTE = 公用表表达式。语法是
with t1 as (Select...), t2 As (Select...) SELECT * from T1 INNER JOIN t2 on T1.ID = T2.FK,本质上它就像在运行时创建的视图,允许您从中进行选择并像视图或表一样加入它。使阅读查询更容易并分离概念。也可以使用内联视图来完成;但通常这些并不那么容易阅读/维护。 -
我不确定你所说的 cte 是什么意思。你能给我举个例子,说明你用更大的查询引用什么并加入吗?
-
哦,在关于 cte 的回复中被击败了 18 秒 ;) 是的,我已经尝试过了,但不走运。任何人都可以帮助我采取正确的方法吗?
-
您能否发布您的 CTE 尝试,结果有什么问题?
标签: sql-server tsql