2010-10-15 3 views
0

première requête:Comment joindre des requêtes à partir d'une table?

select 
    Batch,Shiplist_Qty,COUNT(X.Batch) as ALLOCATED,(Shiplist_Qty - COUNT(X.Batch)) as Variance 
    from dbo.FG_FILLIN as X 
    where X.Status in('KITTED','ALLOCATED') group by X.Batch,X.Shiplist_Qty 

Sortie:

Shiplist_Qty ALLOCATED Batch Variance 
    2    2  CIP2 0 
    8    6  CIP4 2 

deuxième requête:

Select BAtch, 
COUNT(X.Batch) as KITTED from dbo.FG_FILLIN as X 
where X.Status='KITTED' group by X.Batch 

OUTPut:

Batch KITTED 
CIP2 1 

Maintenant je dois rejoindre ce deux requêtes et spectacle résultat quelque chose comme ça.

Shiplist_Qty ALLOCATED Batch Variance Kitted 
     2    2  CIP2 0   1 
     8    6  CIP4 2   0 

Merci en faveur!

Répondre

1

Vous pouvez utiliser subquery:

select 
    Batch, 
    Shiplist_Qty, 
    COUNT(X.Batch) as ALLOCATED, 
    (Shiplist_Qty - COUNT(X.Batch)) as Variance, 
    (select Count(Batch) from dbo.FG_FILLIN where Status='KITTED' and Batch = X.Batch) as Kitted 
from dbo.FG_FILLIN as X 
where X.Status in('KITTED','ALLOCATED') group by X.Batch,X.Shiplist_Qty 
+0

ça marche! Merci – Crimsonland

2

Essayez ceci:

select Batch, Shiplist_Qty,COUNT(X.Batch) as ALLOCATED, 
    (Shiplist_Qty - COUNT(X.Batch)) as Variance, ISNULL(Kitted, 0) as Kitted 
from dbo.FG_FILLIN as X 
LEFT OUTER JOIN 
(
    Select Batch, 
    COUNT(Y.Batch) as KITTED from dbo.FG_FILLIN as Y 
    where Y.Status='KITTED' group by Y.Batch 
) Batches 
ON X.Batch = Batches.Batch 
where X.Status in('KITTED','ALLOCATED') 
group by X.Batch,X.Shiplist_Qty, ISNULL(Kitted, 0) 
Questions connexes