SQL格式支点

时间:2018-10-02 12:12:19

标签: sql sql-server pivot

我的数据透视表运行正常,下面是我创建的数据透视表

SET @SQL =
    '
    SELECT * FROM 
        (SELECT  
               User.[Parties]
              ,User.[Accounts]
              ,User.[Amount]
              FROM User) AS BaseData

    PIVOT(
        SUM(BaseData.[Amount])
        FOR BaseData.[Parties]
        IN(' + @Parties + '     

        )
    ) AS PivotTable
    ' 
    EXEC( @SQL)

还有一个例子,说明@Parties = Tom时我会得到什么

Accounts     Tom
Loan         1000
Bank         3000
Bank2        1500

但是我在格式化透视结果的编号时遇到麻烦。我希望它看起来像...

Accounts     Tom
Loan         1,000
Bank         3,000
Bank2        1,500

我知道用于执行此操作的代码是...

FORMAT(User.Amount, 'N0') AS Amount

但是我无法在关键结果中得到这一点,有人有任何想法吗?

1 个答案:

答案 0 :(得分:1)

Larnu和Gordon都指出,这确实属于表示层。

但是,如果必须的话,请对PIVOT中的BaseDataMAXSUM进行较小的改动

示例

SET @SQL =
    '
    SELECT * 
     FROM (SELECT User.[Parties]
                 ,User.[Accounts]
                 ,[Amount] = format(sum(User.[Amount]),''N0'')
            FROM  User
            GROUP BY User.[Parties]
                    ,User.[Accounts]
          ) AS BaseData
    PIVOT(
        MAX(BaseData.[Amount])
        FOR BaseData.[Parties]
        IN(' + @Parties + '     
        )
    ) AS PivotTable
    ' 
    EXEC( @SQL)