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;