TSQL:我的 Partition By 做错了什么?
TSQL: What am I doing wrong with my Partition By?
ItemID | NumberOfUses | LastMaint | Partition
0111 1 NULL 1
0111 1 1/1/2015 2
0111 2 1/1/2015 2
0111 3 1/1/2015 2
0111 4 1/1/2015 2
0111 5 1/1/2015 2
0111 1 4/1/2015 3
0111 2 4/1/2015 3
0111 3 4/1/2015 3
0111 1 7/1/2015 4
0111 2 7/1/2015 4
0111 3 7/1/2015 4
0111 4 7/1/2015 4
0111 5 7/1/2015 4
0111 6 7/1/2015 4
0111 7 7/1/2015 4
0111 8 7/1/2015 4
0111 9 7/1/2015 4
我想弄清楚的是如何使分区列看起来像上面那样。 (我在不同的 groups/partitions 之间加了一个 space 只是为了方便看)。
我一直在尝试使用与以下查询接近的内容来执行此操作。我已经尝试了 ROW_NUMBER() OVER()
中几乎所有列的组合
SELECT [ItemID]
,[NumberOfUses]
,[LastMaintenance]
,ROW_NUMBER() OVER (PARTITION BY ?????????
ORDER BY ???????) [Partition]
FROM [ItemsHistory]
ORDER BY [Partition]
尝试 DENSE_RANK:
SELECT [ItemID]
,[NumberOfUses]
,[LastMaintenance]
,DENSE_RANK() OVER (PARTITION BY [ItemId] ORDER BY [LastMaintenance]) [Partition]
FROM [ItemsHistory]
ORDER BY [ItemId], [Partition], [NumberOfUses]
ItemID | NumberOfUses | LastMaint | Partition
0111 1 NULL 1
0111 1 1/1/2015 2
0111 2 1/1/2015 2
0111 3 1/1/2015 2
0111 4 1/1/2015 2
0111 5 1/1/2015 2
0111 1 4/1/2015 3
0111 2 4/1/2015 3
0111 3 4/1/2015 3
0111 1 7/1/2015 4
0111 2 7/1/2015 4
0111 3 7/1/2015 4
0111 4 7/1/2015 4
0111 5 7/1/2015 4
0111 6 7/1/2015 4
0111 7 7/1/2015 4
0111 8 7/1/2015 4
0111 9 7/1/2015 4
我想弄清楚的是如何使分区列看起来像上面那样。 (我在不同的 groups/partitions 之间加了一个 space 只是为了方便看)。
我一直在尝试使用与以下查询接近的内容来执行此操作。我已经尝试了 ROW_NUMBER() OVER()
中几乎所有列的组合SELECT [ItemID]
,[NumberOfUses]
,[LastMaintenance]
,ROW_NUMBER() OVER (PARTITION BY ?????????
ORDER BY ???????) [Partition]
FROM [ItemsHistory]
ORDER BY [Partition]
尝试 DENSE_RANK:
SELECT [ItemID]
,[NumberOfUses]
,[LastMaintenance]
,DENSE_RANK() OVER (PARTITION BY [ItemId] ORDER BY [LastMaintenance]) [Partition]
FROM [ItemsHistory]
ORDER BY [ItemId], [Partition], [NumberOfUses]