第一種
SELECT title,
SUM(CASE typeid WHEN '1' THEN gjdate ELSE 0 END) AS '調休',
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
--
行轉列的字段
DECLARE @row2columnValue SYSNAME
--
行變列值的字段
SET @tableName
=
'
lfil_tb
'
SET @groupColumn
=
'
title
'
SET @row2column
=
'
typeid
'
SET @row2columnValue
=
'
gjdate
'
--
從行數據中獲取可能存在的列
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)
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元

