更新时间: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 = 解决方案