我有兩張桌子
第一表:
| 排 | ID1 | ID2 | ID3 |
|---|---|---|---|
| 1 | 1 | 2 | 3 |
| 2 | 4 | 5 | 6 |
第二表:
| ID | 文本 |
|---|---|
| 1 | 文本1 |
| 2 | 文本2 |
| 3 | 文本3 |
| 4 | 文本4 |
| 5 | 文本5 |
| 6 | 文本6 |
期望得到這樣的視圖
| 排 | 連接文本 |
|---|---|
| 1 | 文本1 文本2 文本3 |
| 2 | 文本 4 文本 5 文本 6 |
您知道我如何通過 oracle 中的宣告來實作這一目標嗎?這就是我到目前為止所擁有的一切......但我不知道我該如何繼續......我想我可以在連接中使用 Alias ......但我不知道如何使用這些來讓文本通過不同的身份證...
select ID1text || ' ' || ID2text|| ' ' || ID3text||' '||
from firstTable join secondTable
先感謝您 :)
uj5u.com熱心網友回復:
如果您不想三次加入 secondTable ,則可以使用以下替代方法,即使用Unpivoting子句首先取消透視 firstTable(列 ID* --> 行),然后將其與secondTable加入。在該步驟之后,您所要做的就是將該結果按“行”列分組,并使用Listagg聚合函式根據需要連接文本。
with firstTable_Unpivoted ( "Row", ID, source_column ) as (
SELECT "Row", ID, source_column
from firstTable
unpivot (
ID for source_column in (
ID1 as 'ID1'
, ID2 as 'ID2'
, ID3 as 'ID3'
)
)
)
select
FTU."Row"
, listagg(ST.Text, ' ') within group (order by FTU.ID) ConcatinatedText
from
firstTable_Unpivoted FTU
left join
secondTable ST
on FTU.ID = ST.ID
group by FTU."Row"
;
T12:
SELECT row_id
,LISTAGG( text, ',' ) WITHIN GROUP (ORDER BY id)
FROM (WITH
aa
AS
(SELECT ids
,row_id
FROM t11 UNPIVOT (ids FOR id1 IN (id1, id2, id3)))
SELECT *
FROM aa
,t12
WHERE aa.ids = t12.id)
GROUP BY row_id
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/419760.html
標籤:
