嗨,我需要連接我的表中的所有行。 我有這個查詢select * from table1;
這個表包含400個字段 我不能這樣做select column1 ||','||column2||','||.....from table1
有人可以幫助e修復它使用select * from table1來協調所有行。 謝謝。在一行中連接所有行
回答
在Oracle(和其他類似數據庫管理系統),你可以使用系統表....做這兩個步驟:
假設你想要的所有列合併成1列X行...
步驟1:
SELECT LISTAGG(column_Name, '|| Chr(44)||') --this char(44) adds a comma
within group (order by column_ID) as Fields
--Order by column_Id ensures they are in the same order as defined in db.
FROM all_tab_Cols
WHERE table_name = 'YOURTABLE'
and owner = 'YOUROWNER'
--Perhaps exclude system columns
and Virtual_Column = 'NO'
步驟2:
將結果複製到新的SQL語句中並執行。 的看起來像Field1|| Chr(44)||Field2|| Chr(44)||Field3
SELECT <results>
FROM YOURTABLE;
這將導致一個逗號分隔值的列表中1列的YOURTABLE
所有行如果所有列(與空間和沿長度| |)將超過允許的4000個字符...我們可以通過,而不是使用XML對象使用CLOB數據類型...
*更換步驟1中帶*號
SELECT RTRIM(XMLAGG(XMLELEMENT(Column_ID,Column_Name,'|| Chr(44)||').extract('//text()') order by Column_ID).GetClobVal(),'|| Chr(44)||') fields
FROM all_tab_Cols
WHERE table_name = 'YOURTABLENAME'
and owner = 'YOUROWNER'
--Perhaps exclude system columns
and Virtual_Column = 'NO';
上述歸因於This Oracle thread的語法,但更新了您的需要。
問題我有一個400列有這樣的東西SELECT LISTAGG(*,'||,||')? – razzek
你試過了嗎?第1步從指定的table.schema中選擇所有非虛擬列。步驟2然後選擇全部400列併合並它們。您只需將YOURTABLE和YOUROWNER更改爲架構並對其進行表格運行,然後將結果粘貼到第2步查詢中,並用您複製的內容替換
還是你得到一個字符串concat太長的錯誤? ORA-01489:字符串連接的結果太長 01489. 00000 - 「字符串連接的結果太長」 *原因:字符串連接結果大於最大大小。 *操作:確保結果小於最大尺寸.' – xQbert
- 1. 左/右連接以接收所有行
- 2. 全外連接不返回所有行?
- 3. Oracle左連接不返回所有行
- 4. 用連接加總所有行
- 5. 如何在python中將文本文件中的所有行連接在一起?
- 6. 與所有連接表的ID列進行左連接
- 7. 左連接不返回在MySQL中的所有行
- 8. 在Python中連接numpy矩陣的所有行
- 9. 所有連接正在使用中:執行停止
- 10. 根據潛在客戶ID將所有註釋連接在一行中?
- 11. 當連接表中沒有一行可用時,左連接不返回行
- 12. 在同一行中鑄造和連接
- 13. 在一行中連接字典數組
- 14. SQL - 爲一個表中的值標識行,其中所有連接的行只有一個特定的值
- 15. 爲每個左連接行匹配重複所有基錶行
- 16. 如何在anoter表中連接一行與另一行
- 17. 有沒有一種簡單的方法在mysql中按行號連接行?
- 18. 從連接表中的條件中選擇一個表中的所有行
- 19. 在Magento中執行連接
- 20. 在MySQL中連接行
- 21. 在MySQL中單行連接多行
- 22. 是否有可能在dplyr中進行完全連接並保留連接中使用的所有列?
- 23. 左連接不返回左表中的所有行codeigniter
- 24. OleDb連接不讀取excel文件中的所有行
- 25. 左連接不返回左表中的所有行
- 26. SQL如何獲得連接表中的所有行
- 27. 如何統計每行的連接中的所有實例?
- 28. AndroidStudio:始終在所有連接的設備上運行
- 29. 在所有連接的設備上運行多個adb安裝
- 30. JPQL左連接 - 在返回所有左行時過濾右列
請標記您的dbms。 –
這看起來像甲骨文呢?並且它似乎並不像你在拼接行......它好像你想組合列返回1列多行?如果情況並非如此,請發佈樣本數據和預期結果。 – xQbert
如果使用db2或oracle查看LISTAGG()函數。 – Hogan