第一種
SELECT title,
SUM(CASE typeid WHEN '1' THEN gjdate ELSE 0 END) AS '調(diào)休',
SUM(CASE typeid WHEN '2' THEN gjdate ELSE 0 END) AS '請假',
SUM(CASE typeid WHEN '3' THEN gjdate ELSE 0 END) AS '加班'
FROM lfil_tb
GROUP BY title
第二種
DECLARE @sql_str NVARCHAR(MAX) DECLARE @sql_col NVARCHAR(MAX) DECLARE @tableName SYSNAME -- 表名 DECLARE @groupColumn SYSNAME -- 分組字段(title name 什么玩意的) DECLARE @row2column SYSNAME -- 行轉(zhuǎn)列的字段 DECLARE @row2columnValue SYSNAME -- 行變列值的字段 SET @tableName = ' lfil_tb ' SET @groupColumn = ' title ' SET @row2column = ' typeid ' SET @row2columnValue = ' gjdate ' -- 從行數(shù)據(jù)中獲取可能存在的列 SET @sql_str = N ' SELECT @sql_col_out = ISNULL(@sql_col_out + '' , '' , '''' ) + QUOTENAME([ ' +@row2column+ ' ]) FROM [ ' +@tableName+ ' ] GROUP BY [ ' +@row2column+ ' ] ' -- PRINT @sql_str EXEC sp_executesql @sql_str,N ' @sql_col_out NVARCHAR(MAX) OUTPUT ' ,@sql_col_out= @sql_col OUTPUT -- PRINT @sql_col SET @sql_str = N ' SELECT * FROM ( SELECT [ ' +@groupColumn+ ' ],[ ' +@row2column+ ' ],[ ' +@row2columnValue+ ' ] FROM [ ' +@tableName+ ' ]) p PIVOT (SUM([ ' +@row2columnValue+ ' ]) FOR [ ' +@row2column+ ' ] IN ( ' + @sql_col + ' ) ) AS pvt ORDER BY pvt.[ ' +@groupColumn+ ' ] ' -- PRINT (@sql_str) EXEC (@sql_str)
?
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
