sql - 在sql中生成数据组合
问题描述
我有一张如下表 -
COL1 | COL2 |
---|---|
101 | 一个 |
102 | 乙 |
102 | C |
102 | D |
103 | C |
103 | 乙 |
我需要为 COL1 中的一组唯一值生成所有可能的组合以及 uniqueID,如下所示 - COL1 中有 3 个唯一值,可能有 6 种组合,因此结果中应该有 18 行。
1,101,A
1,102,B
1,103,C
2,101,A
2,102,B
2,103,E
3,101,A
3,102,C
3,103,C
4,101,A
4,102,C
4,103,E
5,101,A
5,102,D
5,103,C
6,101,A
6,102,D
6,103,E
请帮助并提出答案。我尝试使用LAG
, LEAD
, CROSS JOIN
,无法找到解决方案。
答案可以使用任何 HANA SQL 脚本或 Oracle SQL 或 MS-SQL。我有一个适用于 COL1 中固定数量的唯一值的解决方案,但是我需要该解决方案是动态的,并且应该适用于任意数量的组合和值。
解决方案
这回答了问题的原始版本。
如果我理解正确,我认为最简单的方法是将值放在一行中:
select row_number() over (order by t1.col1, t2.col1, t3.col1),
t1.col1, t1.col2,
t2.col1, t2.col2,
t3.col1, t3.col2
from t t1 join
t t2
on t1.col1 < t2.col1 join
t t3
on t2.col1 < t3.col1;
如果您愿意,您可以取消透视这些结果。
推荐阅读
- woocommerce - 将 Woocommerce 存款插件“未来付款”总计更改为每月?
- r - 使用 R 单击网页中的按钮
- javascript - 如何在 Recharts 中为 YAxis 创建一个自定义垂直标签,以防标签太长?
- java - 如果我有一个字符串,如何在日历上设置 maxDate?
- selenium - 如何在 UWP 中使用 WinAppDriver 等待元素?
- sql - 大日期范围内的最小/最大日期值取决于值
- laravel - 如何获取特定用户的一列的平均值
- php - 从 codeigniter 中的查询获取结果时出错
- c# - 将多个实现注册到同一个接口
- arrays - 在 char 数组中的每个字符串之间添加空字符串