MAX记录特定的行结果

时间:2013-10-22 15:16:38

标签: sql max

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

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  

有什么想法吗?

谢谢

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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

但它可能不是解决问题的最有效方法。