--行数据
SELECT [em_id] AS [人员编号],[fl_name] AS [账号类别],
[fl_card_id] AS [账号],[amount] AS [金额] FROM [tt]
--行数据转列
SELECT * INTO #T1 FROM [tt] WHERE [fl_name]='养老金账号'
SELECT * INTO #T2 FROM [tt] WHERE [fl_name]='公积金账号'
SELECT * INTO #T3 FROM [tt] WHERE [fl_name]='医保账号'
SELECT * INTO #T4 FROM [tt] WHERE [fl_name]='失业金账号'
CREATE TABLE #T5
([人员编号] char(4) ,
[养老金账号] nvarchar(20),[养老金金额] numeric(18,2),
[公积金账号] nvarchar(20),[公积金金额] numeric(18,2),
[医保账号] nvarchar(20),[医保金额] numeric(18,2),
[失业金账号] nvarchar(20),[失业金金额] numeric(18,2),
[合计金额] numeric(18,2)
) ON [PRIMARY]
INSERT INTO #T5
SELECT DISTINCT
T0.[em_id] AS [人员编号],
T1.[fl_card_id] AS [养老金账号], T1.[amount] AS [养老金金额],
T2.[fl_card_id] AS [公积金账号], T2.[amount] AS [公积金金额],
T3.[fl_card_id] AS [医保账号], T3.[amount] AS [医保金额],
T4.[fl_card_id] AS [失业金账号], T4.[amount] AS [失业金金额],
T1.[amount]+T2.[amount]+T3.[amount]+T4.[amount] AS [合计金额]
FROM [tt] T0
INNER JOIN [#T1] T1 ON T0.[em_id]=T1.[em_id]
INNER JOIN [#T2] T2 ON T0.[em_id]=T2.[em_id]
INNER JOIN [#T3] T3 ON T0.[em_id]=T3.[em_id]
INNER JOIN [#T4] T4 ON T0.[em_id]=T4.[em_id]
SELECT * FROM #T5 UNION
SELECT '总计','养老金:',SUM([养老金金额]),'公积金:',SUM([公积金金额]),
'医保:',SUM([医保金额]),'失业金:',SUM([失业金金额]),SUM([合计金额]) FROM #T5
DROP TABLE #T1,#T2,#T3,#T4,#T5
/************************************************************
* by Ran Ran 2004/8/15 14:19 *
* ranran@youngsoft.cn *
* Beijing Youngsoft Ltd. *
************************************************************/
--行数据
SELECT [em_id] AS [人员编号],[fl_name] AS [账号类别],
[fl_card_id] AS [账号],[amount] AS [金额] FROM [tt]
--行数据转列
SELECT * INTO #T1 FROM [tt] WHERE [fl_name]='养老金账号'
SELECT * INTO #T2 FROM [tt] WHERE [fl_name]='公积金账号'
SELECT * INTO #T3 FROM [tt] WHERE [fl_name]='医保账号'
SELECT * INTO #T4 FROM [tt] WHERE [fl_name]='失业金账号'
SELECT DISTINCT
T0.[em_id] AS [人员编号],
T1.[fl_card_id] AS [养老金账号], T1.[amount] AS [养老金金额],
T2.[fl_card_id] AS [公积金账号], T2.[amount] AS [公积金金额],
T3.[fl_card_id] AS [医保账号], T3.[amount] AS [医保金额],
T4.[fl_card_id] AS [失业金账号], T4.[amount] AS [失业金金额]
FROM [tt] T0
INNER JOIN [#T1] T1 ON T0.[em_id]=T1.[em_id]
INNER JOIN [#T2] T2 ON T0.[em_id]=T2.[em_id]
INNER JOIN [#T3] T3 ON T0.[em_id]=T3.[em_id]
INNER JOIN [#T4] T4 ON T0.[em_id]=T4.[em_id]
DROP TABLE #T1,#T2,#T3,#T4
/************************************************************
* by Ran Ran 2004/8/15 13:52 *
* ranran@youngsoft.cn *
* Beijing Youngsoft Ltd. *
************************************************************/
------------------------------------
<H1><B>地球是圆的吗?</B></H1>
------------------------------------
《CSDN论坛新助手 CSDN's forum Explorer》
1、更快速的浏览
2、更方便地保存
3、更快捷的收/发短信
下载地址:http://www.seeyou.com.cn/CoolSlob/CSDNExplorer.exe
select em_id,养老金账号=sum(case fl_id when '养老金账号' then amount else 0 end),
公积金帐号=sum(case fl_id when '公积金帐号' then amount else 0 end),
医保帐号=sum(case fl_id when '医保帐号' then amount else 0 end),
失业金账号=sum(case fl_id when '失业金账号' then amount else 0 end)
from tt group by em_id
select em_id,养老金账号=sum(case fl_id when '养老金账号' then amount),
公积金帐号=sum(case fl_id when '公积金帐号' then amount),
医保帐号=sum(case fl_id when '医保帐号' then amount),
失业金账号=sum(case fl_id when '失业金账号' then amount)
from tt group by em_id
select em_id
,养老金帐号=sum(case fl_id when '养老金帐号' then amount else 0 end)
,公积金帐号=sum(case fl_id when '公积金帐号' then amount else 0 end)
,医保帐号=sum(case fl_id when '医保帐号' then amount else 0 end)
,失业金账号=sum(case fl_id when '失业金账号' then amount else 0 end)
from tt
group by em_id