【发布时间】:2018-01-29 23:30:10
【问题描述】:
我希望根据“Drv_uniqId”对以下数据集进行分组或拆分。
Drv_uniqId 和 Trk_uniqId 之间的关系可以是一对二或一对多(最多 10 个)。也就是说,一个Drv_uniqId最多可以分配给10个Trk_uniqId
Trk_uniqId 和 Drv_uniqId 之间的关系可以是一对二一或一对二多(最多 4 个)。也就是说,一个Trk_uniqId最多可以分配给4个Drv_uniqId
数据可以包含所有唯一的 Drv_uniqId 和 Trk_uniqId 组合。我要在报告中显示这些数据,我不能在每一页上显示一行。 Group/split 将在 SSRS 中用于将最终报告拆分为多个页面。
规则
每个Drv_uniqId 必须在同一个组内。不能分成多个组。
每组 = 最少 5 行,最多 10 行
DDL
SELECT *
FROM (VALUES
(1,530,'4392 T_01'),
(2,540,'4209 H_01'),
(3,540,'4551 T_01'),
(4,543,'4407 T_01'),
(5,543,'4691 T_01'),
(6,546,'4691 T_01'),
(7,546,'4579 T_01'),
(8,757,'4688 T_01'),
(9,757,'4689 T_01'),
(10,757,'4691 T_01'),
(11,757,'4407 T_01'),
(12,855,'4410 T_01'),
(13,1249,'4583 A_01'),
(14,1324,'4689 T_01'),
(15,1324,'4690 T_01'),
(16,1411,'4689 T_01'),
(17,1411,'4690 T_01'),
(18,1411,'4478 A_01'),
(19,1411,'4411 T_01'),
(20,1411,'4692 T_01'),
(21,1411,'4406 T_01'),
(22,2115,'4410 T_01'),
(23,2115,'4414 T_01'),
(24,2115,'4422 T_01'),
(25,2325,'3422 T_01') ,
(26,2325,'4522 T_01') ,
(27,2330,'4462 T_01') ) tbl (Id,Drv_uniqId,Trk_uniqId)
我已经删除了示例预期输出,因为任何Drv_uniqId 进入哪个组都无关紧要,只要它们不存在于多个组中 - 任何解决方案都不必仅匹配此输出规则。
最少 5 个,最多 10 个
【问题讨论】:
-
请提供预期输出
-
对不起,我不明白逻辑......
-
@Shnugo 我希望能够根据
Drv_uniqId对数据进行分组或拆分。Drv_uniqId不能存在于多个组中 -
@Cool_Br33ze,我已经可以在问题中找到了。但请用普通语言解释原因,例如第 8 行在第 2 组中,或者为什么第 3 组仅包含 1411,但第 4 组有几个
Drv_uniqId值。这对你来说可能很清楚,但我看不到任何规则...... -
对不起,我也无法理解逻辑。为什么记录 1-7 在同一组中,为什么 8-15 在不同的组中?
标签: tsql sql-server-2008-r2 grouping