Sybase:获取组中的第一个数据
Sybase: Get the first data in a Group
我在获取数据集合中组中的第一行数据时遇到问题。目前我使用 Sybase 作为我的数据源。
我也使用了下面的查询,但没有用。
SELECT Id, Product, RANK() OVER (PARTITION BY Id ORDER BY Id) FROM ProductTbl
SELECT Id, Product FROM ProductTbl as X
WHERE Id = (
SELECT min(Id)
FROM ProductTbl WHERE Id = X.Id
)
下面的例子是我正在处理的数据。
Id Product
1111 Apple
1111 Orange
1111 Banana
2222 Guava
2222 JackFruit
2222 Grape
3333 ProductA
3333 ProductB
我的预期输出应该是
Id Product
1111 Apple
2222 Guava
3333 ProductA
select Id,Product from(
SELECT
Id,
Product,
RANK() OVER (PARTITION BY Id ORDER BY Product) as first_row
FROM ProductTbl group by Id,Product)x
where first_row = 1
输出:
Id Product
1111,Apple
2222,Grape
3333,ProductA
R在U之前,所以不可能是Guava
为什么不呢:
SELECT Id, MIN(Product) FROM ProductTbl GROUP BY Id
我是不是理解错了?
我在获取数据集合中组中的第一行数据时遇到问题。目前我使用 Sybase 作为我的数据源。
我也使用了下面的查询,但没有用。
SELECT Id, Product, RANK() OVER (PARTITION BY Id ORDER BY Id) FROM ProductTbl
SELECT Id, Product FROM ProductTbl as X
WHERE Id = (
SELECT min(Id)
FROM ProductTbl WHERE Id = X.Id
)
下面的例子是我正在处理的数据。
Id Product
1111 Apple
1111 Orange
1111 Banana
2222 Guava
2222 JackFruit
2222 Grape
3333 ProductA
3333 ProductB
我的预期输出应该是
Id Product
1111 Apple
2222 Guava
3333 ProductA
select Id,Product from(
SELECT
Id,
Product,
RANK() OVER (PARTITION BY Id ORDER BY Product) as first_row
FROM ProductTbl group by Id,Product)x
where first_row = 1
输出:
Id Product
1111,Apple
2222,Grape
3333,ProductA
R在U之前,所以不可能是Guava
为什么不呢:
SELECT Id, MIN(Product) FROM ProductTbl GROUP BY Id
我是不是理解错了?