SQL Server 2005 数据透视表中括号内的百分比

标签 sql t-sql sql-server-2005 null pivot

这是 here 的后续问题。 我有一些输出并且能够添加总计列,但现在我需要使用该列来添加百分比,如下所示:

| LESSONID     RESPONSE COUNT-> | 0       | 1       | 2       | 3       | 4       | N |
---------------------------------------------------------------------------------------                         
|lesson1                        | 1 (20%) | 1 (20%) | 1 (20%) | 1 (20%) | 1 (20%) | 5 |
|lesson2                        | 1 (20%) | 1 (20%) | 1 (20%) | 2 (40%) | 0       | 5 |
|lesson3                        | 1 (20%) | 1 (20%) | 0       | 3 (60%) | 0       | 5 |
|lesson4                        | 0       | 1 (20%) | 4 (80%) | 0       | 0       | 5 |
|lesson5                        | 0       | 5 (100%)| 0       | 0       | 0       | 5 |

我在这里找到了一些帮助,但无法将所有内容整合在一起。

Here is what I have so far

*此外,我使用的是 SQL Server 2005,它未在 SQLFiddle 中表示

最佳答案

您可以像处理任何其他查询一样格式化数据透视查询的结果。因此,您可以将百分比连接到其各自的源。 Here is a SQL FIDDLE .

SELECT RC.lessonid AS 'lessonid     response count->'
  , convert (varchar(20), isnull([0], 0))
  + isnull (' ('
-- As both numbers are integers don't forget to cast one of them into double
-- If you dislike * 100 format or want more precise result.
  + convert (varchar(20), [0] * 100 / RCN.N)
  + '%)', '') as [0]
  , convert (varchar(20), isnull([1], 0))
  + isnull (' ('
  + convert (varchar(20), [1] * 100 / RCN.N)
  + '%)', '') as [1]
  , convert (varchar(20), isnull([2], 0))
  + isnull (' ('
  + convert (varchar(20), [2] * 100 / RCN.N)
  + '%)', '') as [2]
  , convert (varchar(20), isnull([3], 0))
  + isnull (' ('
  + convert (varchar(20), [3] * 100 / RCN.N)
  + '%)', '') as [3]
  , convert (varchar(20), isnull([4], 0))
  + isnull (' ('
  + convert (varchar(20), [4] * 100 / RCN.N)
  + '%)', '') as [4]
  ,RCN.N
FROM (
    SELECT lessonid
        ,response
        ,count(response) AS respcnt
    FROM tblRChoices
    GROUP BY lessonid
        ,response
    ) TableResponseCount
PIVOT(SUM(respcnt) FOR response IN (
            [0]
            ,[1]
            ,[2]
            ,[3]
            ,[4]
            )) RC
JOIN (SELECT lessonid, count(lessonid) as N FROM tblRChoices GROUP BY lessonid) RCN 
ON RC.lessonid = RCN.lessonid

关于SQL Server 2005 数据透视表中括号内的百分比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11465666/

相关文章:

php - 从数据库表中获取相似行

MySQL 对 group by 的混淆。为什么会发生这种情况?

sql - 查找表中的最小和最大数据列

sql - tsql 插入和更新

sql - 列操作和消除重复

sql-server - 压缩文件夹中的 SQL 备份

c# - .NET 压缩 XML 以存储在 SQL Server 数据库中

python - 在 AWS Opensearch python 客户端中使用 SQL Access

mysql - SQL - SELECT 任何列具有特定值的行

sql 2005 case 语句 - 无效的列名