亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

SQL 2005中的PIVOT

SQL 2005中的PIVOT

慕無忌1623718 2019-10-21 14:26:18
我需要旋轉一列(“數字”列)。示例需要此數據:a 1a 2b 3b 4c 5d 6d 7d 8d 9e 10e 11e 12e 13e 14看起來像這樣a 1 2b 3 4c 5d 6 7 8 9e 10 11 12 13 14任何幫助將不勝感激...
查看完整描述

3 回答

?
肥皂起泡泡

TA貢獻1829條經驗 獲得超6個贊

使用ROW_NUMBER(),PIVOT以及一些動態SQL(但沒有必要光標):


CREATE TABLE [dbo].[stackoverflow_198716](

    [code] [varchar](1) NOT NULL,

    [number] [int] NOT NULL

) ON [PRIMARY]


DECLARE @sql AS varchar(max)

DECLARE @pivot_list AS varchar(max) -- Leave NULL for COALESCE technique

DECLARE @select_list AS varchar(max) -- Leave NULL for COALESCE technique


SELECT @pivot_list = COALESCE(@pivot_list + ', ', '') + '[' + CONVERT(varchar, PIVOT_CODE) + ']'

        ,@select_list = COALESCE(@select_list + ', ', '') + '[' + CONVERT(varchar, PIVOT_CODE) + '] AS [col_' + CONVERT(varchar, PIVOT_CODE) + ']'

FROM (

    SELECT DISTINCT PIVOT_CODE

    FROM (

        SELECT code, number, ROW_NUMBER() OVER (PARTITION BY code ORDER BY number) AS PIVOT_CODE

        FROM stackoverflow_198716

    ) AS rows

) AS PIVOT_CODES


SET @sql = '

;WITH p AS (

    SELECT code, number, ROW_NUMBER() OVER (PARTITION BY code ORDER BY number) AS PIVOT_CODE

    FROM stackoverflow_198716

)

SELECT code, ' + @select_list + '

FROM p

PIVOT (

    MIN(number)

    FOR PIVOT_CODE IN (

        ' + @pivot_list + '

    )

) AS pvt

'


PRINT @sql


EXEC (@sql)


查看完整回答
反對 回復 2019-10-21
?
Cats萌萌

TA貢獻1805條經驗 獲得超9個贊

SSRS中的Matrix控件具有動態列,如果該數據仍然綁定到報表,則可以使用它。否則,您將必須創建一個sql sproc,該sql sproc像動態示例一樣動態生成sql,然后執行它。


查看完整回答
反對 回復 2019-10-21
  • 3 回答
  • 0 關注
  • 455 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號