SQL Server 將資料轉向成橫的列表
這個我不太知道要怎麼明確的定義
用圖來說明比較快
像下圖,是我們資料庫中「訂貨主檔」的列表
現在要做的是,把資料「橫」起來
把所有客戶與其相關的訂單號碼顯示出來,沒有也要顯示
挺不賴的,對吧!
這有用的地方可多了,假設今天購物車買了一大堆
客戶只想知道買了什麼東西,其他的不想知道
這個一表給他就可以了~
程式碼如下:
這樣就完成了,延伸題很像,以下是所有的訂單的列表
可以得知有1個訂單,對應數個產品
把他的產品列出來:
程式碼大同小異:
用圖來說明比較快
像下圖,是我們資料庫中「訂貨主檔」的列表
現在要做的是,把資料「橫」起來
把所有客戶與其相關的訂單號碼顯示出來,沒有也要顯示
挺不賴的,對吧!
這有用的地方可多了,假設今天購物車買了一大堆
客戶只想知道買了什麼東西,其他的不想知道
這個一表給他就可以了~
程式碼如下:
use 中文北風 go --先建立個函數,如此才可以在SELECT中呼叫--------------------------------------------- CREATE FUNCTION 訂單號碼名細(@CompanyId VARCHAR(5)) RETURNS NVARCHAR(MAX) AS BEGIN DECLARE @OrderNumber NVARCHAR(MAX) SET @OrderNumber= '' SELECT @OrderNumber = @OrderNumber + CAST(訂單號碼 AS VARCHAR)+', ' FROM 訂貨主檔 WHERE 客戶編號 = @CompanyId ----因為最後一筆會多個逗號,把它去除 IF LEN(@OrderNumber) >0 SET @OrderNumber = SUBSTRING(@OrderNumber,1,LEN(@OrderNumber)-1) RETURN @OrderNumber END SELECT 客戶編號,公司名稱,dbo.訂單號碼名細(客戶編號) AS 列表 FROM 客戶
這樣就完成了,延伸題很像,以下是所有的訂單的列表
可以得知有1個訂單,對應數個產品
把他的產品列出來:
程式碼大同小異:
CREATE FUNCTION 訂單產品名細(@OrderNumber INT) RETURNS NVARCHAR(MAX) AS BEGIN DECLARE @Pid NVARCHAR(MAX) SET @Pid ='' SELECT @Pid= @Pid +產品+', ' from 訂貨明細 AS A JOIN 產品資料 AS B ON A.產品編號 = B.產品編號 WHERE 訂單號碼 = @OrderNumber IF LEN(@Pid) > 0 SET @Pid = SUBSTRING(@Pid,1,LEN(@Pid)-1) RETURN @Pid END SELECT 訂單號碼,dbo.訂單產品名細(訂單號碼) as 產品列表 FROM 訂貨主檔
留言
張貼留言