在SQL类型上检索Quantite

时间:2018-10-03 06:08:12

标签: sql sql-server

我有一个VenPro表,其中列类型为“四列引用”,“类型”,“数量”和“值” 我想在有销售的情况下检索产品参考及其已售数量和已生产数量及其价值。例如,如果我有一个生产类型为qte的qte产品,而没有销售qte,我不想显示它

表VenPro

 ----------------------------
    Ref + Type   + Qty+ Value +
    -----------------------------
    01  +   Prod + 10 + 100   +
    02  +   Prod + 05 + 50    +
    02  +   Sale + 03 + 45    +
    03  +   Prod + 8  + 80    +
    03  +   Sale + 8  + 120   +
    ---------------------------

该查询必须显示参考产品行02和03,因为存在产品数量和销售数量,并且不显示行01,因为没有销售。

回溯那行我正在寻找这笔钱

--Production ---- + ------- Sale
Ref + Qty + Value +--+ Qty + Value +
-------------------------------------+
02  + 05  + 50    +--+  03  + 45     +
03  + 8   + 80    +--+  8   + 120    +
-------------------------------------+

没有参考编号01的专业版/销售专线,因为没有销售

2 个答案:

答案 0 :(得分:0)

希望这是您要查询的查询。我认为[VenPro]是正确的表名。

select o.Ref, o.Qty, o.Value 
from o.[VenPro] o
where Type = 'Prod' and exists ( 
  select 1 from [VenPro] i where i.Type = 'Sale' and i.Ref = o.Ref );

更新:

select o.Ref, o.Qty, o.Value , i.Qty, i.Value
from o.[VenPro] o join [VenPro] i 
  on i.Type = 'Sale' and i.Ref = o.Ref and o.Type = 'Prod';

这应为产品和销售行选择组合的详细信息。

答案 1 :(得分:0)

这个问题也可以通过使用子查询来解决

with cte1 as (
    select * from VenPro v where Type = 'Prod'
), cte2 as
(
 select * from VenPro v1 where Type = 'Sale'
) 
 select cte1.*  from cte1 join cte2 on cte1.Ref=cte2.Ref