1

我已经工作了大约两周来为我工作的公司构建一些详细的报告选项。上周某个时候或前一周我在这里问了一个问题,这让我开始了一个查询,我最终大大加强了这个查询。

我从一个只跟踪单个交易的库存分类帐开始。目标是建立一个更全面的分类账,以保持库存总量、销售总量,如果某件商品缺货,它将跟踪补货前的天数。

初始查询使用 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 进行比较。我根本不知道如何制作一个与之比较。谁能帮我吗?我真的很感激。经过这么长时间的努力,如此接近,令人兴奋和沮丧。

4

2 回答 2

1

如果您已经在查询中使用 with 解决了聚合函数问题,您也可以使用视图来解决。

这是一个使用包含聚合函数的 with 子句的视图示例:

http://social.msdn.microsoft.com/Forums/sk/sqlgetstarted/thread/302040c6-6a1b-4f99-8a1d-84bb196cb5e6

第一次发帖。

希望这会有所帮助=)

于 2012-07-24T17:39:14.950 回答
0

您可以在视图中使用with语句:

create view xxx as
    with <blah blah blah>
    select <your query>

这能解决你的问题吗?

于 2012-07-24T17:23:52.643 回答