[英]How do I select each data set from a Row_Number Over Partition by table based on the Row_Number Over Partition by column?
How do I select each data set from a Row_Number Over Partition by table based on the Row_Number Over Partition by column? 如何根据“按行划分的行数”表从“按行划分的行数”表中选择每个数据集?
please diagram below: 请如下图:
+-----------+-------------+-------------------+------------+----------+
| packageid | packagename | package max units | references | row_Numb |
+-----------+-------------+-------------------+------------+----------+
| 44 | Basic | 10 | 103 | 1 |
| 45 | Basic | 10 | 103 | 2 |
| 42 | Cola | 10 | 102 | 1 |
| 43 | Cola | 10 | 102 | 2 |
| 46 | Cola | 10 | 102 | 3 |
| 2 | Home | 11 | 101 | 1 |
| 11 | Home | 11 | 101 | 2 |
| 21 | Home | 11 | 101 | 3 |
| 1 | Spicy | 11 | 104 | 1 |
| 3 | Spicy | 11 | 104 | 2 |
| 41 | Spicy | 11 | 104 | 3 |
+-----------+-------------+-------------------+------------+----------+
I want select each data set in each group based on the row_num column. 我想基于row_num列选择每个组中的每个数据集。
Every attempt is welcomed. 欢迎一切尝试。
Although it sounds like you already have the ROW_NUMBER()
column, I believe it is what you are asking for . 尽管听起来您已经有了ROW_NUMBER()
列,但我相信这是您所要的。 For the first record for each PACKAGENAME
use: 对于每个PACKAGENAME
的第一条记录, PACKAGENAME
使用:
SELECT s.* FROM (
SELECT t.*,
ROW_NUMBER() OVER(PARTITION BY t.packagename ORDER BY t.packageid) as rnk
FROM YourTable t) s
WHERE s.rnk = 1
For all of them use only the inner query. 对于所有这些,仅使用内部查询。
Here is the cte
version, if you want to fetch single record from each group. 如果您要从每个组中获取单个记录,则这是cte
版本。
;with cte_1
as(
SELECT *,
ROW_NUMBER() OVER(PARTITION BY [packagename],[package max units], [references] ORDER BY [packageid]) as row_Numb
FROM YourTable )
SELECT [packageid],[packagename],[package max units],[reference]
FROM cte_1
WHERE row_Numb = 1
You can use TOP 1 WITH TIES with ordering by ROW_NUMBER(): 您可以按排ROW_NUMBER()的顺序使用TOP 1 WITH TIES:
SELECT TOP 1 WITH TIES *
FROM YourTable
ORDER BY ROW_NUMBER() OVER (PARTITION BY packagename ORDER BY packageid)
Output: 输出:
packageid packagename package max units references
44 Basic 10 103
42 Cola 10 102
2 Home 11 101
1 Spicy 11 104
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.