[英]Using cross join with unnest
我正在嘗試創建一些用於測試目的的虛擬數據。 以下是我的查詢 -
select *, LEVEL1, LEVEL2 from table
cross join
(select ('SVC1', 'SVC2') AS LEVEL1 ) b
cross join
(select ('SVC3', 'SVC4') AS LEVEL2 ) b
電流輸出
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)
我希望輸出是 -
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
我糊塗了。 為什么不這樣做呢?
select t.*, v.LEVEL1, v.LEVEL2
from table cross join
(values ('SCV1', 'SCV3'),
('SCV1', 'SCV4'),
('SCV2', 'SCV3'),
('SCV2', 'SCV4')
) v(LEVEL1, LEVEL2);
或者,如果你真的有兩對以上,你可以使用多個CROSS JOIN
:
select t.*, v1.LEVEL1, v2.LEVEL2
from table cross join
(values ('SCV1') ('SCV2')
) v1(LEVEL1) cross join
(values ('SCV3'), ('SCV4')
) v2(LEVEL2);
您的代碼定義了一個包含兩列的記錄類型(這也稱為復合類型)。 這就是括號在這種情況下的作用,如文檔中所述。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.