0

我有一张包含以下数据的表格。

ITEM          LOCATION          ItemKey  
5551212       A                 5  
5551212       B                 4  
5551212       C                 3  
5553434       A                 2  
5553434       B                 1  

我想要的是能够查询这些数据并返回另一个值为 T 的列,如果每个项目的 ItemKey 为 = Max(ItemKey) 而不是 F 。因此,例如,结果将如下所示。

ITEM          LOCATION          ItemKey          NEWFIELD  
5551212       A                 5                T  
5551212       B                 4                F  
5551212       C                 3                F  
5553434       A                 2                T  
5553434       B                 1                F  

有任何想法吗?

谢谢

4

2 回答 2

1

如果要将其设置为T如果它属于具有以下位置的位置Max(ItemKey)

SELECT t1.ITEM, t1.LOCATION, t1.ItemKey, 
       NEWFIELD = CASE WHEN LOCATION = 
                  (SELECT TOP 1 t2.Location 
                   FROM dbo.TableName t2
                   ORDER BY t2.ItemKey DESC)
                  THEN 'T' ELSE 'F' END
FROM  dbo.TableName t1
于 2013-10-22T15:25:11.523 回答
0

也许这样的事情会起作用:

SELECT 
  t1.*, 
  CASE t1.ItemKey WHEN t2.MaxItem THEN 'T' ELSE 'F' END AS NEWFIELD 
FROM table_name t1
LEFT JOIN (
  SELECT item, MAX(ItemKey) AS MaxItem 
  FROM table_name
  GROUP BY item
) t2 ON t1.ITEM = t2.ITEM

不过,这可能不是解决问题的最有效方法。

于 2013-10-22T15:26:05.773 回答