根据表 B 的拆分百分比雪花拆分表 A 的整数列
Posted
技术标签:
【中文标题】根据表 B 的拆分百分比雪花拆分表 A 的整数列【英文标题】:snowflake splitting table A's integer columns based on Table B's split percentage 【发布时间】:2021-04-28 15:53:08 【问题描述】:我想在雪花查询中执行以下操作。 对雪花来说非常新,从我读过的内容来看,雪花似乎不支持循环
我有两张桌子
Table A
Id col1 col2 col3
1 ABC 100 50
2 DEF 200 0
Table B
Date Percentage Name
2021-04-28 .5 XYZ
2021-04-28 .5 ZYX
在我的输出查询中,我想拆分表 A 中的每一行
-
整数列按表 B 中的百分比进行拆分
从表 B 中添加名称列(以表示针对该特定名称的拆分整数值
Output
Id col1 col2 col3 Name
1 ABC 50 25 XYZ
1 ABC 50 25 ZYX
2 DEF 100 0 XYZ
2 DEF 100 0 ZYX
【问题讨论】:
嗨 - 到目前为止你尝试过什么?请使用您迄今为止编写的 SQL 更新您的问题。我不知道为什么你觉得你需要循环来解决这个问题,但雪花确实支持循环 - 通过使用存储过程 【参考方案1】:这似乎是一个简单的笛卡尔连接:
create or replace table A (id number, col1 varchar, col2 number, col3 number);
insert into A values (1,'ABC',100,50),
(2,'DEF',200,0);
create or replace table B ("Date" date, Percentage number(3,2),Name varchar );
insert into B values ('2021-04-28',0.5,'XYZ'),
('2021-04-28',0.5,'ZYX');
select Id, col1,
round(col2 * percentage) as col2,
round(col3 * percentage) as col3,
Name
from A, B;
+----+------+------+------+------+
| ID | COL1 | COL2 | COL3 | NAME |
+----+------+------+------+------+
| 1 | ABC | 50 | 25 | XYZ |
| 1 | ABC | 50 | 25 | ZYX |
| 2 | DEF | 100 | 0 | XYZ |
| 2 | DEF | 100 | 0 | ZYX |
+----+------+------+------+------+
【讨论】:
是的,我想我无缘无故地把它复杂化了,这就是我所做的。我做了一个与笛卡尔积相同的交叉连接。非常感谢。以上是关于根据表 B 的拆分百分比雪花拆分表 A 的整数列的主要内容,如果未能解决你的问题,请参考以下文章