1
示例代码转换十进制转换为字符串在枢轴
Declare
@table1 VARCHAR(MAX)
Set @table1 = 'Select * from @tempTbl'
Declare
@List VARCHAR(MAX),
@Pivot VARCHAR(MAX)
Select @List = ISNULL(@List + ',', '') + TrxCd From TransacMaster Where Module = 'CB'
Set @Pivot = '
SELECT ROW_NUMBER() OVER (ORDER BY DebtorCd ASC) As RowIndex, *
FROM (
Select Distinct
c.UserId,
d.Name,
b.TrxCd
SUM(b.Amount) As Amount
From tbl_InvH a
Inner Join tbl_InvD b on a.subCd = b.subCd and a.InvNo = b.InvNo
Left Join tbl_User c On a.UserId = c.UserId
Left Join tbl_Personnel d on c.PersonnelId = d.PersonnelId
Group By c.UserId, d.Name, b.TrxCd
) as s
PIVOT
(
SUM(Amount)
FOR TrxCd IN (' + @List + ')
)AS pvt'
Declare @Result nVarchar(MAX)
Set @Result = @table1 + '
Union All
' + @Pivot
Exec sp_executesql @Result
我想从十进制到字符串转换领域金额,因为在此之后我想UNION与另一个表,但是从另一个表的字段数量和领域是不同的类型。
我已经试过CAST(SUM(金额)为varchar),但错误:
'CAST' 是不是一个公认的聚合函数。
我不能在主选择转换,因为TrxCd领域是动态
结果枢纽
RowIndex | UserId | Name | IT01 | IT02 | IT03 | IT04
--------------------------------------------------------------------------------
1 | John | John Ivy | 2,000 | 2,000 | 1,000 | 5,000
2 | Merry | Merry Ish | 1,000 | 1,000 | 1,000 | 6,000
其他表
RowIndex | UserId | Name | Transac1 | Transac2 | Transac3 | Transac4
-------------------------------------------------------------------------------------------------
1 | John | John Ivy | Trx Bank A | Trx Bank B | Trx Bank C | Trx Bank D
我应该怎么做才能转换场量枢。
添加查询与'UNION' –
@Prdp联合查询已添加 – Noob
你并不真的需要一个SUM()在枢轴,作为数据源表已经总结。所以,你可以用一个不同的集合函数,比如MAX(),就像这样:'PIVOT(MAX(CAST(Amount AS VARCHAR(20)))for TrxCd IN('+ @List +'))AS pvt' – cha