Sql 子查询以显示所有以前的记录

Sql 子查询以显示所有以前的记录,sql,subquery,Sql,Subquery,它带来了: 但由于mm=3的数量为零,因此缺少带高亮显示的项目。任何帮助都将不胜感激。如果您需要年、月和项目的所有组合,那么您需要生成这些组合,然后输入数据。其余部分采用类似的方式: SELECT TOP (100) PERCENT yy, mm, Item, SUM(Qty) AS qty, COALESCE ((SELECT SUM(Qty) AS Expr1

它带来了:


但由于mm=3的数量为零,因此缺少带高亮显示的项目。任何帮助都将不胜感激。

如果您需要年、月和项目的所有组合,那么您需要生成这些组合,然后输入数据。其余部分采用类似的方式:

SELECT        TOP (100) PERCENT yy, mm, Item, SUM(Qty) AS qty, COALESCE
                             ((SELECT        SUM(Qty) AS Expr1
                                 FROM            dbo.v_Storage AS p
                                 WHERE        (Item = i.Item) AND (mm < i.mm) AND (yy = i.yy)), 0) AS OpnQty
FROM            dbo.v_Storage AS i
GROUP BY yy, mm, Item
ORDER BY yy, mm, Item
select yy.yy, mm.mm, i.Item,
       sum(s.qty) as qty,
       ifnull((SELECT SUM(Qty)
               FROM dbo.v_Storage s2
               WHERE (s2.Item = i.Item) AND (s2.mm < mm.mm) AND (s2.yy = yy.yy)
              ), 0) AS OpnQty
from (select distinct yy from v_Storage) yy cross join
     (select distinct mm from v_Storage) mm cross join
     (select distinct item from v_Storage) i left outer join
     v_Storage s
     on s.yy = yy.yy and s.mm = mm.mm and s.item = i.item
group by yy.yy, mm.mm, i.item
order by yy.yy, mm.mm, i.item;
select yy.yy, mm.mm, i.Item,
       sum(s.qty) as qty,
       coalesce(sum(s.qty), 0) over (partition by i.item, yy.yy order by mm.mm) as OpnQty
from (select distinct yy from v_Storage) yy cross join
     (select distinct mm from v_Storage) mm cross join
     (select distinct item from v_Storage) i left outer join
     v_Storage s
     on s.yy = yy.yy and s.mm = mm.mm and s.item = i.item
group by yy.yy, mm.mm, i.item
order by yy.yy, mm.mm, i.item;