J'ai une table AllocatedStock contenant un numéro de dossier (connu sous le nom de TPND) et une quantité. J'ai besoin de sélectionner une liste de stock de produit mais présente ceci avec le numéro de produit (connu sous le nom TPNB) plutôt que le numéro de cas. J'ai aussi une table ProductLookup qui contient tous les TPNB et TPND.SQL Joindre à une seule ligne - SQL Server 2005
AllocatedStock
identité AllocatedStockID
TPND int
Quantité int
ProductLookup
identité ProductLookupID
TPND int
TPNB int
Il y a un certain nombre de produc t types (TPNB) qui peuvent être fournis dans plus d'un type de cas (TPND). Ce résultat requis est le nombre total de chaque type de produit détenu, j'ai utilisé une fonction somme() comme suit:
select TPNB, sum(AllocatedQty) as 'QTY'
from integration.ProductLookup as PL
inner join dbo.AllocatedStock as AStock
on PL.TPND = AStock.TPND
group by TPNB
Malheureusement, la table ProductLookup contient des lignes en double (données mauvaise historique qui ne peut pas être nettoyé) où une ligne contient les mêmes TPND et TPNB qu'une autre ligne. La seule chose que je dois joindre à la table ProductLookup est d'obtenir le TPNB pour le TPND que j'ai dans la table AllocatedStock. Est-il possible d'obtenir la jointure pour sélectionner uniquement le 1er match? Le problème que j'ai actuellement est que pour les TPND qui ont une ligne dupliquée dans la table ProductLookup, je récupère deux fois la valeur de la quantité.
vous serais reconnaissant pour toute aide,
Merci
Rob.
Bon sang, vous les gars sont vite sur ce point! – CResults