Άθροισμα φαίνεται να διπλασιάσει / τριπλή μέτρηση, όταν έφυγε ενώνει δύο πίνακες

ψήφοι
0

Είμαι προσπαθεί να ενώσει δύο πίνακες (απογραφή και τις πωλήσεις) σε έναν αριθμό αναγνώρισης και συνοψίσω την ποσότητα των εμπορευμάτων στην αποθήκη, η αξία των αποθεμάτων, καθώς και την αξία των πωλήσεων / όγκο. Αυτό είναι ομαδοποιημένος με τον αριθμό μέρος.

Εδώ είναι αυτό που κάνω:

`select inv.[num]
, sum(inv.[Value]) as [Inventory Value]
, sum(inv.[qty]) as [Inventory Qty]
, sum(sales.[Value]) as [Sales Value]
, sum(sales.[qty]) as [Sales qty]
from Inv
left join sales
on inv.[num]=sales.[num]
group by inv.[num]`

Το άθροισμα αξία των αποθεμάτων είναι περίπου 50x πολύ μεγάλο, οι πωλήσεις περίπου 3 ή 4 φορές πάρα πολύ μεγάλο. Πώς μπορώ να κρατήσει από πάνω αθροίζοντας;

Δημοσιεύθηκε 22/07/2014 στις 15:35
χρήστη
Σε άλλες γλώσσες...                            


1 απαντήσεις

ψήφοι
0

Όταν χρησιμοποιείτε group byμε ενώνει ότι είναι πολλά-προς-ένα ή πολλά-προς-πολλά, θα πρέπει να συγκεντρώσετε πρώτα τα μέτρα και να ενταχθούν στις διαστάσεις.

select
    inv_agg.inv_num as 'Inventory Number'
    ,inv_agg.inv_value as 'Inventory Value'
    ,inv_agg.inv_qty as 'Inventory Qty'
    ,sales_agg.sales_value as 'Sales Value'
    ,sales_agg.sales_qty as 'Sales Qty'
from (select 
        inv.num as inv_num
        ,sum(inv.Value) as inv_value
        ,sum(inv.qty) as inv_qty
    from inv
    group by inv.num) inv_agg
left join (select
        sales.num sales_num
        ,sum(sales.Value) as sales_value
        ,sum(sales.qty) as sales_qty
    from sales
    group by sales.num) sales_agg
on inv_agg.inv_num = sales_agg.sales_num

Ή, με ΕΕΠ

with inv_agg as (select 
        inv.num as inv_num
        ,sum(inv.Value) as inv_value
        ,sum(inv.qty) as inv_qty
    from inv
    group by inv.num),
sales_agg as (select
        sales.num sales_num
        ,sum(sales.Value) as sales_value
        ,sum(sales.qty) as sales_qty
    from sales
    group by sales.num)
select
    inv_agg.inv_num as 'Inventory Number'
    ,inv_agg.inv_value as 'Inventory Value'
    ,inv_agg.inv_qty as 'Inventory Qty'
    ,sales_agg.sales_value as 'Sales Value'
    ,sales_agg.sales_qty as 'Sales Qty'
from inv_agg left join sales_agg
    on inv_agg.inv_num = sales_agg.sales_num
Απαντήθηκε 03/04/2015 στις 03:11
πηγή χρήστη

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more