[英]Using cross join with unnest
I am trying to create some dummy data for testing purposes.我正在尝试创建一些用于测试目的的虚拟数据。 Below is a query I have -
以下是我的查询 -
select *, LEVEL1, LEVEL2 from table
cross join
(select ('SVC1', 'SVC2') AS LEVEL1 ) b
cross join
(select ('SVC3', 'SVC4') AS LEVEL2 ) b
Current Output电流输出
id num name type occuSVC2ion location LEVEL1 LEVEL2
1000056 1326120205 CHRISTOPHER H Physical ASHEVILLE, NC (SVC1,SVC2) (SVC3,SVC4)
1030026 1326105 Jennifer Ew F None N/A Meridian, MS (SVC1,SVC2) (SVC3,SVC4)
I want the output to be -我希望输出是 -
id num name type occuSVC2ion location LEVEL1 LEVEL2
1000056 1326120205 CHRISTOPHER H Physical ASHEVILLE, NC SVC1 SVC3
1000056 1326120205 CHRISTOPHER H Physical ASHEVILLE, NC SVC1 SVC4
1000056 1326120205 CHRISTOPHER H Physical ASHEVILLE, NC SVC2 SVC3
1000056 1326120205 CHRISTOPHER H Physical ASHEVILLE, NC SVC2 SVC4
1030026 1326105 Jennifer Ew F None N/A Meridian, MS SVC1 SVC3
1030026 1326105 Jennifer Ew F None N/A Meridian, MS SVC1 SVC4
1030026 1326105 Jennifer Ew F None N/A Meridian, MS SVC2 SVC3
1030026 1326105 Jennifer Ew F None N/A Meridian, MS SVC2 SVC4
I'm confused.我糊涂了。 Why not just do this?
为什么不这样做呢?
select t.*, v.LEVEL1, v.LEVEL2
from table cross join
(values ('SCV1', 'SCV3'),
('SCV1', 'SCV4'),
('SCV2', 'SCV3'),
('SCV2', 'SCV4')
) v(LEVEL1, LEVEL2);
Or, if you really have more than two pairs, you can use multiple CROSS JOIN
s:或者,如果你真的有两对以上,你可以使用多个
CROSS JOIN
:
select t.*, v1.LEVEL1, v2.LEVEL2
from table cross join
(values ('SCV1') ('SCV2')
) v1(LEVEL1) cross join
(values ('SCV3'), ('SCV4')
) v2(LEVEL2);
Your code is defining a record type with two columns (this is also known as a composite type).您的代码定义了一个包含两列的记录类型(这也称为复合类型)。 That is what parentheses do in this situation, as explained in the documentation .
这就是括号在这种情况下的作用,如文档中所述。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.