Re: [SQL ] 查詢表格問題 及 Select語法問題
※ 引述《flyalice (飛吧!愛麗斯)》之銘言:
: 大家好, 公司目前有一套軟體用的資料庫系統是SQL
: 要做一些查詢報表出來,我才剛自學,有點問題想請教
: 使用SQL 2008
: 我已用SQL查詢連結資料庫產生了一個表格TableA:
: number Project Value
: ------------------------------------
: 001 P016 Y
: 001 P017 Y
: 001 P018 N
: 002 P016 Y
: 002 P017 N
: 002 P018 N
: 我想變成TableB 顯示出來
: TableB想把number不要重覆顯示, 然後依project,列出Value值。類似將number做為列標
: 題, Project做為欄標題, 中間值為value,
: TableB為:
: number P016 P017 P018
: ---------------------------------------
: 001 Y Y N
: 002 Y N N
: 請問有什麼好方法嗎?
: 先感謝大家提供的意見。
可以使用PIVOT得到你要的效果
SELECT * FROM TableA
PIVOT( MAX(Value) FOR Project IN (P016,P017,P018)) AS pvtTable
至於假如要產生動態的欄位,也就是說不只P016, P017,P018三個的話
寫程式組SQL字串吧
: ==================================================
: 另一個問題, 如果用select 方法查詢資料,如何將標題別名以變數顯示
: 我的語法如下:
: Select number, value
: From TableA
: Where Project = 'P016'
: 會顯示出
: number value
: ----------------------
: 001 Y
: 002 Y
: 我想要的顯示方式是
: number P016
: ----------------------
: 001 Y
: 002 Y
: 可以將語法變成
: Select number, value as 'P016'
: From TableA
: Where Project = 'P016'
: 但我要做3次, 所以我用While語法加上變數
: 希望可以做到
: Declare @pname char(10)
: Select number , value as @pname
: From TableA
: Where Project = @pname
: 我試過很多次, 在value as @pname會有問題,怎麼試都試不出來,
: 是不是標題別名不能以變數取代呢?
: 先謝謝大家提供的意見。
沒遇過這種需求..
不過假如把程式碼把改成
DECLARE @sql NVARCHAR(100)
DECLARE @pname NVARCHAR(10)
SET @sql = N'SELECT number, value as ' + @pname
+ ' FROM TableA WHERE Project = ''' + @pname + ''''
EXECUTE (@sql)
把這段放在WHILE裡面可以達到你的需求
只是這不會是最好的解法
用字串組的SQL效能上會比直接下來得差
--
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 111.249.155.47
推
10/17 08:36, , 1F
10/17 08:36, 1F
→
10/17 09:33, , 2F
10/17 09:33, 2F
※ 編輯: ThreeDay0905 來自: 111.249.155.47 (10/17 09:35)
→
10/18 00:08, , 3F
10/18 00:08, 3F
→
10/18 00:49, , 4F
10/18 00:49, 4F