我有一张包含以下数据的表格。
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
有什么想法吗?
谢谢
答案 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
但它可能不是解决问题的最有效方法。