2017-06-22 1 views
-1

J'ai une question comment écrire une requêtetable SQL mappage de serveur

Voici une table cartographie produit échantillon

Seq Product 

1. [N/A] 
2. App 
3. App OTH 
4. Opp FCL 
5. Opp LCL 
6. Opp OTH 
7. OTH 

J'ai une autre table une entrée présente plusieurs enregistrements et parfois une entrée a plusieurs produits !

exemple

Seq Entry ProductSales 

1. 7SX3456 [N/A] 
2. 7SX3456 Opp FCL 
3. 7SX3456 Opp OTH 

Je veux écrire une requête, la logique est, si les émissions de produits d'entrée [N/A] alors je recherche le deuxième produit de la table de correspondance de produit qui correspond au produit de l'entrée . Donc, dans ce cas, je vais choisir "Opp FCL" comme je ne choisis pas [N/A] et "Opp OTH" vient après "Opp FCL".

Donc, le produit pour cette entrée, je vais mettre à jour en tant que Opp FCL pour tous les enregistrements.

+0

Bienvenue sur StackOverflow, s'il vous plaît lire les guides [Comment demander] (https://stackoverflow.com/help/asking) afin de mieux comprendre votre question et vous fournir des réponses encore meilleures. –

+0

Voulez-vous exclure les enregistrements avec des valeurs ProductSale [N/A] 'de la requête? Ou voulez-vous montrer seulement une rangée? – Alexander

+0

Je souhaite exclure [N/A] et conserver un seul ProductSales pour une entrée. –

Répondre

0

utiliser une expression de table commune avec ROW_NUMBER

;WITH CTE 
AS 
(
    SELECT Seq, Entry, ProductSales, 
      ROW_NUMBER() OVER (Partition By Entry ORDER BY Seq) AS RN 
    FROM ProductSales 
    WHERE ProductSales <> '[N/A]' 
) 
SELECT Seq, Entry, ProductSales 
FROM CTE 
WHERE RN = 1 
+0

Merci, comment ça se fait que je n'y ai pas pensé! –