我现在已经工作了大约两周,为我工作的公司建立了一些详细的报告选项。我在上周或前一周的某个时间问了一个问题,这让我开始查询,我最终收紧了。
我从一个库存分类帐开始,它只跟踪单个交易。我们的目标是建立一个更彻底的分类账,它将保持一个正在运行的库存总额,一个正在运行的销售总额,如果一个项目缺货,它将跟踪重新供应的天数。
在对聚合列进行自联接之前,初始查询使用With ... as语句来定义具有聚合的表。不幸的是,我不能做同样的事情来创建一个视图,所以我需要找到一种方法来创建不同的聚合,这仍然允许我自我加入它们以保持我的总数有序。
到目前为止,我是如何重新调整我的陈述的。
Create View 'QLedger' as
Select tcum.txnid,
tcum.Item,
tcum.TxnDate,
tcum.[Tran Type],
tcum.Quantity,
tcum.cumq
from (select *, SUM( Quantity )
OVER (PARTITION BY InventoryLedger.Item
ORDER BY InventoryLedger.TxnID
ROWS UNBOUNDED PRECEDING ) cumq,
abs(
sum(
case when [Tran Type] = 'Shipping'
or [Tran Type] = 'Customer Return'
then Quantity end)
over (partition by qryrptInventoryLedger.item
order by InventoryLedger.txnid
rows unbounded preceding)) LifeSales
from InventoryLedger) tcum
left outer join InventoryLedger tcumnext
on tcum.Item = tcumnext.Item
and tcum.TxnID < tcumnext.TxnID
and
tcum.cumq = 0 and tcumnext.cumq >0
where tcum.Item = '103-02'
and tcum.cumq = 0
group by tcum.TxnID, tcum.TxnDate, tcum.Item, tcum.[tran type], tcum.Quantity
这几乎是正确的,除了我自己加入的表(tcumnext)没有与tcum比较的运行/累积数量列。我根本无法弄清楚如何与之进行比较。谁能帮我吗?我真的很感激。这样做是令人兴奋和令人沮丧的,在这么长时间工作之后如此接近。
答案 0 :(得分:1)
如果您已在查询中使用with解决了聚合函数问题,则也可以使用视图解决此问题。
以下是使用包含聚合函数的with子句的视图示例:
http://social.msdn.microsoft.com/Forums/sk/sqlgetstarted/thread/302040c6-6a1b-4f99-8a1d-84bb196cb5e6
首先发布。
希望这有助于=)
答案 1 :(得分:0)
您可以在视图中使用 with 语句:
create view xxx as
with <blah blah blah>
select <your query>
这会解决您的问题吗?