1. 程式人生 > >用SQL Server 2008解決“一行轉多行”問題的神奇方法

用SQL Server 2008解決“一行轉多行”問題的神奇方法

在編寫AO應用例項時遇到要一行變多行的問題。

問題描述:現有表一,要求執行SQL後變成表二形式

      表一

    表二

由於sql中沒有提供像C#那樣的split方法,所以遍查資料,終於找到一個神奇的方法,如下:

--建立測試表

create table t1

(

    id int,

    txt varchar(30)

)

--插入測試資料

insert into t1

values(1,'aa,dd,f'),

(2,'ddd,ff,rt,gg'),

(3,'s,dddddee,d'),

(4,'ty'),

(5,'hello,dderf,kii'),

(6,'da,ddeff,ddd,d'

)

--顯示測試資料

select*from t1

--一行變多行的方法

selecta.id,b.txt

from

(select id,txt=convert(xml,'<root><v>'+replace(txt,',','</v><v>')+'</v></root>')from t1) a

outer apply

(select txt=C.v.value('.','nvarchar(100)')from a.txt.nodes('/root/v')C(v))b

  是的,我這裡用到了sql xml,用節點符號替換了逗號,然後用 C.V.value 通過節點把他分離顯示。程式碼簡潔,功能實現!   

相關推薦

SQL Server 2008解決一行”問題的神奇方法

在編寫AO應用例項時遇到要一行變多行的問題。 問題描述:現有表一,要求執行SQL後變成表二形式       表一     表二 由於sql中沒有提供像C#那樣的split方法,所以遍查資料,終於找到一個神奇的方法,如下: --建立測試表create tab

關於SQL Server將一列的內容拼接成一行的問題討論

示例 昨天遇到一個SQL Server的問題:需要寫一個儲存過程來處理幾個表中的資料,最後問題出在我想將一個表的一個列的多行內容拼接成一行,比如表中有兩列資料 : 類別 名稱 AAA 企業1

SQL Server將一列的內容拼接成一行或一個字串的問題

昨天遇到一個SQL Server的問題:需要寫一個儲存過程來處理幾個表中的資料,最後問題出在我想將一個表的一個列的多行內容拼接成一行 比如表中有兩列資料 : ep_classes  ep_name AAA         企業1 AAA         企業2

關於SQL Server將一列的內容拼接成一行

示例 需要寫一個儲存過程來處理幾個表中的資料,最後問題出在我想將一個表的一個列的多行內容拼接成一行,比如表中有兩列資料 : 類別 名稱 AAA 企業1 AAA 企業2 AAA 企業3 BBB 企業4 BBB 企業5 我想把這個表變成如下格式:

20170501xlVBA銷售訂單整理一行

tex text ring 銷售訂單 def fun sed 小包 goto Sub NextSeven_CodeFrame() Application.ScreenUpdating = False Application.DisplayAlerts =

SQL 一列合併方法

T_SQL 將一列多行資料合併為一行 SQL Server在進行資料遷移和報表處理的時候會遇到將一列多行資料拼接為一個字串的情況,為了處理這個問題,在網上找了一些相關的資料,提供兩種方法,供遇到類似問題的朋友們參考,也藉此加深自己的印象。 Table:SC St

Hive裡實現資料的拆分、一行列、explode使用

    在做資料轉換、清洗的過程中,經常會對行進行拆分、一行資料拆分為多行資料,下面是簡單的例子:    如圖表裡有如下資料:最終要得到結果如下:先用split進行分割得到一個數組,在用explode拆分陣列。LATERAL VIEW explode(split(b,',')

SQL SERVER 2008遠端資料庫移植到本地的方法

    Winform程式或網站後臺的SQL SERVER 2008放置在遠端伺服器上,用MicroSoft SQL Server ManageMent Studio進行表、檢視、儲存過程進行增刪改操作沒有問題,但是想把遠端資料庫移植到本地,一是讓遠端網管把備份發過來,二是

SQL server 2008 安裝問題解決

ron 數據庫 gif control version designer 庫文件 chm 復制 http://www.cnblogs.com/Hackerman/p/4472811.html 安裝sqlserver2008 出現的一些問題解決方法 1,安裝sqlse

SQL Server 2008機器名連線,不能IP地址連線問題 的一個解決方法

     一開始: telnet IP 1433 連線失敗      接著我在伺服器端 找到      Microsoft SQL Server 2008 -->配置工具--> SQL Server 配置管理器      然後在右鍵點選SQL Server

如何解決SQL Server 2008 無法連接到(local)

選擇 ima self 服務器類型 clear erl 引擎 gem sign 打開SQL SERVER配置管理--》SQL SERVER 網絡配置--》實例名的協議 將SQLEXPRESS協議中的Named Pipes和 TCP/IP啟用。

SQL Server 2008 R2 附加數據庫 “嘗試打開或創建物理文件 拒絕訪問”的解決辦法

tle log server 管理 html 運行 啟動 sof serve SQL Server 2008 R2 附加數據庫 “嘗試打開或創建物理文件 拒絕訪問”的解決辦法 其實是來自一篇SQL Server 2005同樣錯誤的帖子,不過試了在SQL Server 2

[]SQL Server 2008 如何配置報表管理器

intro sub man led 完成後 不支持 嵌入 檢測 步驟 本文轉自:https://docs.microsoft.com/zh-cn/previous-versions/sql/sql-server-2008/cc281384%28v%3dsql.100%29

sql server 2008 資料庫可疑的解決步驟

備份並新建同名數據庫,並替換原資料檔案   1 把問題資料庫備份後直接刪除   停掉SQLSERVER服務,把伺服器上出問題的資料庫, 假設名稱為 test的資料庫檔案及日誌檔案備份到其他目錄,然後直接將其刪除,把其資料庫檔案及日誌檔案也刪除 2 新建同名數據庫 &nb

問題 SQL Server 2008'sa'登入失敗 啟用'sa'登入的辦法

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

SQL Server 分割字串和合並條資料為一行

分割字串函式create function f_split(@c varchar(2000),@split varchar(2)) returns @t table(col varchar(20)) as begin while(charindex(@split,@c)<&g

SQL Server 2008 評估期已過的解決辦法

今天上班一開啟SQL Server,就報了下面這個問題 很顯然,SQL Server 試用期到了,微軟提醒我們購買。大家經濟允許的話,還是要買正版。 對於我們這些暫時無力承擔正版費用的屌絲群體怎麼辦呢? 顯然,重灌不是一個好的辦法。 SQL Server軟體裝起來很麻煩,還需要

SQL Server 2008 18456 錯誤 和 sa無法登入的解決辦法

sql server 2008預設是不允許遠端連線的,sa帳戶預設禁用的,如果想要在本地用SSMS連線遠端伺服器上的SQL Server 2008,需要做兩個部分的配置:   sql server 2

解決 SQL Server 2008 不能儲存密碼

解決 SQL Server 2008 不能儲存密碼 原因在於使用的預設使用者名稱 'sa' 而沒有密碼,解決的辦法就是新建立一個帶密碼的使用者: 左邊列表選擇 安全性 - 登入名 - 右鍵選擇 新建登入名,在彈出的對話方塊建立使用者名稱密碼 在左邊選擇 伺服器角色 頁,設定伺服器角色,這應該是設

解決SQL Server 2008提示評估期已過

解決SQL Server 2008提示評估期已過 第一步:進入SQL2008配置工具中的安裝中心 第二步:再進入維護介面,選擇版本升級 第三步:進入產品金鑰,輸入金鑰 第四步:一直點下一步,直到升級完畢。 SQL Server 2008 Developer:PTTFM-X467