SQL服务器映射表

时间:2017-06-22 08:36:47

标签: mysql sql-server

我有一个问题如何编写一个查询

以下是产品映射表样本

Seq Product

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

我有另一个表,一个条目显示几个记录,有时一个条目有几个产品!

例如

Seq Entry ProductSales

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

我想写一个查询,逻辑是,如果条目产品显示[N / A],那么我将从产品匹配表中搜索与条目产品匹配的第二个产品。所以在这种情况下,我会选择“Opp FCL”,因为我不选择[N / A]而“Opp OTH”来自“Opp FCL”。

因此,此条目的产品我将更新为所有记录的Opp FCL。

1 个答案:

答案 0 :(得分:0)

使用带有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