且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

如何在sql查询中获取表的字段作为列标题

更新时间:2023-01-29 15:29:46

您需要使用PIVOTS

 - 包含测试数据的临时表
 DECLARE   @ PayType   TABLE (PayTypeId  INT ,PayType  VARCHAR ( 30 ))
 DECLARE   @ PayDetails   TABLE (EmpCode  INT ,PayTypeId  INT ,金额浮动)

插入  INTO   @ PayType   VALUES ( 1 ' 插入  INTO   @ PayType   VALUES ( 2 ' 插入  INTO   @ PayType   VALUES ( 3 ' )


插入  INTO   @ PayDetails   VALUES ( 1  1  12000')
插入  INTO   @ PayDetails   VALUES ( 1  2  6000')
插入  INTO   @ PayDetails   VALUES ( 1  3  3200')
插入  INTO   @ PayDetails   VALUES ( 2  1  5000')
插入  INTO   @ PayDetails   VALUES ( 2  2  3000')
插入  INTO   @ PayDetails   VALUES ( 2  3  1200')


- 使用数据透视查询
 SELECT  EmpCode,[基本],[HRA],[其他津贴],([[基本] + [HRA] + [其他津贴])总计
 FROM ( SELECT  EmpCode,PayType,金额
 FROM   @ PayType  pt
加入  @ PayDetails  pd 打开 pt.PayTypeId = pd.PayTypeId) As  
PIVOT(MAX(Amount) FOR  PayType  IN ([[Basic],[HRA],[Other Allowances] )) AS  p 



结果

 EmpCode基本HRA其他津贴总计
-  ----- ----- ----- --------- ------ ---- 
 1   12000   6000   21200 
 2   5000   3000   9200  


了解有关PIVOTS的更多信息 http://msdn.microsoft.com/en-us/library/ms177410.aspx [ ^ ]




检查此

 选择 * 来自 PAYTYPE,PAYDETAILS  1  =