带有计数和总和的 SQL Server 数据透视表

2023-11-21

我正在尝试让 SQL Server 数据透视表正常工作,它允许我对许多列(总共 6 列)进行计数然后求和。数据透视表的目的是汇总任意数量生产站点的在线调查问卷结果。有 6 个问题,可以有 3 个结果值 - 目标、行动和失败。我想做的是计算每个问题的目标、行动和失败的数量,然后对每个问题进行总结。因此,例如,生产站点 A 可能有 2 个目标、2 个操作和 2 个失败。

我的理解是,SQL Server 数据透视表可以提供此信息,然后可以在 ASP.Net ReportViewer 中显示这些信息。下面是我的代码,但它不起作用,可以在一些专家的帮助下完成:

     SELECT PRODUCTION_Site,
     [Target],
     [Action],
     [Fail]
     FROM
     (SELECT Production_Site,
             SUM(Coding),
             SUM(Measurable),
             SUM(Appearance),
             SUM(Aroma),
             SUM(Flavour),
             SUM(Texture)
               FROM t_Pqe_Grocery
               GROUP BY Production_Site) AS T
          PIVOT
         (
           COUNT(Coding) FOR Grocery_Packaging_And_Coding IN ([Target],[Action],[Fail])
           COUNT(Measurable) FOR Grocery_Measurable IN ([Target],[Action],[Fail])
           COUNT(Appearance) FOR Grocery_Appearance IN ([Target],[Action],[Fail])
           COUNT(Aroma) FOR Grocery_Aroma IN ([Target],[Action],[Fail])
           COUNT(Flavour) FOR Grocery_Flavour IN ([Target],[Action],[Fail])
           COUNT(Texture) FOR Grocery_Texture IN ([Target],[Action],[Fail])) AS P

有没有办法解决这个问题,或者数据透视表不是解决方案?

Table is

Production_Site,
Grocery_Packaging_And_Coding,
Grocery_Measurable,
Grocery_Appearance,
Grocery_Aroma,
Grocery_Flavour,
Grocery_Texture

表中的数据是这样的:

Site A, Target, Action, Fail, Target, Target, Target
Site B, Target, Action, Fail, Target, Target, Target
Site C, Target, Target, Target, Target, Target, Target
Site A, Target, Target, Target, Target, Target, Target

我正在寻找的结果是

Production_Site | Target | Action | Fail
Site A              10       1       1
Site B               4       1       1
Site C               6       0       0

执行此查询的一种更简单的方法是同时应用UNPIVOT然后是PIVOT功能:

select *
from
(
  select Production_Site, value 
  from t_Pqe_Grocery
  unpivot
  (
    value
    for col in (Grocery_Packaging_And_Coding, Grocery_Measurable,
                Grocery_Appearance, Grocery_Aroma, 
                Grocery_Flavour, Grocery_Texture)
  ) unp
) src
pivot
(
  count(value)
  for value in ([Target], [Action], [Fail])
) piv

See SQL 摆弄演示

The UNPIVOT获取列列表并将其转换为多行,这使得计数更容易:

select Production_Site, value 
from t_Pqe_Grocery
unpivot
(
  value
  for col in (Grocery_Packaging_And_Coding, Grocery_Measurable,
              Grocery_Appearance, Grocery_Aroma, 
              Grocery_Flavour, Grocery_Texture)
) unp

逆透视结果:

| PRODUCTION_SITE |  VALUE |
----------------------------
|          Site A | Target |
|          Site A | Action |
|          Site A |   Fail |
|          Site A | Target |
|          Site A | Target |
|          Site A | Target |
|          Site B | Target |
|          Site B | Action |
|          Site B |   Fail |
|          Site B | Target |
|          Site B | Target |
|          Site B | Target |
|          Site C | Target |
|          Site C | Target |
|          Site C | Target |
|          Site C | Target |
|          Site C | Target |
|          Site C | Target |
|          Site A | Target |
|          Site A | Target |
|          Site A | Target |
|          Site A | Target |
|          Site A | Target |
|          Site A | Target |

然后应用PIVOT到此将获得您想要的每个的计数PRODUCTION_SITEs。添加后PIVOT结果是:

| PRODUCTION_SITE | TARGET | ACTION | FAIL |
--------------------------------------------
|          Site A |     10 |      1 |    1 |
|          Site B |      4 |      1 |    1 |
|          Site C |      6 |      0 |    0 |
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

带有计数和总和的 SQL Server 数据透视表 的相关文章

  • SQL Server:将数据从一列复制到另一列?

    我有两个具有相同列的表anomaly id 我想复制该行anomaly id使用此代码从第一个表到第二个表 UPDATE amb anamoly log update SET anamoly id t2 anomaly id FROM am
  • “for”SQL Server 附近的语法不正确

    我想向其中已有数据的现有表添加一个新列 该列应该不为空 因此我想设置一个默认值 但是当我这样做时 它会抛出以下异常 for 附近的语法不正确 ALTER TABLE Semester ADD SIDNew uniqueidentifier
  • 哪种本机 dotNet 数据类型最适合传递 SQL Server HierarchyId 值?

    具体来说 我们有一个接受 HierarchyId 作为参数的 SQL Server 存储过程 并且通常我们的存储过程上有一个 SOAP 层 允许通过 SOAP 调用它们 SOAP 服务是使用 C 方法上的 WebMethod 属性来实现的
  • 使用 SQL 序数位置表示法的好处?

    背景资料 序数位置表示法 又称序数 是基于列列表中的列顺序的列简写 SELECT子句 而不是列名或列别名 通常支持在ORDER BY子句 某些数据库 MySQL 3 23 PostgreSQL 8 0 支持语法GROUP BY条款也是如此
  • 数百个别名/同义词与数据库表的完全限定名称

    考虑到多个模式中的数百个数据库表 在创建存储过程和视图时 您是否建议使用别名 同义词或完全限定名称 给定一些 schema table 像这样 Orders OrderHeader Production LineThroughput Sal
  • WinForms 应用程序设计 - 将文档从 SQL Server 移动到文件存储

    我有一个连接到 SQL Server 的标准 WinForms 应用程序 该应用程序允许用户上传当前存储在数据库中的文档 在使用图像列的表中 我需要更改这种方法 以便将文档存储为文件 并将文件的链接存储在数据库表中 使用当前的方法 当用户上
  • 需要 SQL Server 查询帮助

    我在视图中存储一堆数据 将 MS Access 查询转换为视图 现在我想做的是编写一个存储过程来根据添加数据的时间提取数据 这是我正在运行的查询 Select Name PlanID ApptDate 1stAppt rn from Sel
  • SQL Server 2008 R2 的 Try_Convert

    我正在使用 SQL Server 2008 R2 并且有一个VARCHAR我想要转换为的列DECIMAL 28 10 using CONVERT 但其中许多行的格式错误 因此无法将它们解析为数字 在这种情况下 我只想通过将结果设置为 0 或
  • 插入后用触发器更新多行(sql server)

    我有一个表 orderDetails 包含订单的产品 产品编号 color size quantity 和一个表库存 产品编号 size color stock 订单完成后 我使用此查询将项目插入表中orderDetails INSERT
  • Id 或 [TableName]Id 作为主键/实体标识符

    是否首选使用 Id 作为主键的列名或 TableName Id 作为命名约定 表 账户主键 ID 相对 表 账户主键 AccountId 在我见过的实现中 它似乎分为 50 50 左右 每种方法的优点和缺点是什么 跟进 在我的数据库中使用一
  • Sql Server:如何在 WHERE 子句中使用 MAX 等聚合函数

    我想获得该记录的最大值 请帮我 SELECT rest field1 FROM mastertable AS m INNER JOIN SELECT t1 field1 field1 t2 field2 FROM table1 AS T1
  • 使用 WHILE 创建虚拟数据

    我尝试使用 a 在表中插入一些虚拟数据WHILE 但它运行得非常非常慢 我在想也许我写的代码不正确 你能看一下并确认一下吗 Insert dummy data DECLARE i int Content int SET i 5001 WHI
  • 设置 xact_abort 并尝试一起捕获

    我的 sp 中有一个 try catch 块 其中只有一条插入语句 catch 检查错误代码是否违反 pk 如果是则进行更新 但有时我得到 当前事务无法提交 并且无法支持写入日志文件的操作 回滚事务 在批处理结束时检测到不可提交的事务 事务
  • PDO SQLSRV 和 PDO MySQL 在获取 int 或 float 时返回字符串

    当您获取时 PDO MS SQL Server 和 PDO MySQL 都会返回一个字符串数组 即使列的 SQL 类型本应是数字类型 例如 int 或 float 我设法解决了这个问题 但我想了解为什么它们一开始就这样设计 是不是因为PDO
  • 如何使用 DateTime 执行 SQL NOT NULL?

    一个人如何处理DateTime with a NOT NULL 我想做这样的事情 SELECT FROM someTable WHERE thisDateTime IS NOT NULL But how 嗯 它有效吗 我刚刚测试过 Obje
  • SQL Server 用分隔符分割字符串

    我有一个输入字符串 100 2 3 101 2 1 103 2 3 我想解析它并将其添加到具有 3 列的表中 因此它应该是 f x col1 col2 col3 100 2 3 类似的其他数据以逗号分隔作为记录和 作为列 Thanks ni
  • SQL服务器事务

    我需要了解sql server事务 我浏览了谷歌上的一些文章 但我什么也没理解 谁能帮我 您可以通过写入显式启动事务BEGIN TRANSACTION 您可以通过运行来结束事务COMMIT TRANSACTION 之前COMMIT运行时 受
  • Kerberos 双跳

    我们遇到了臭名昭著的 Kerberos 双跳问题 这是一个全新的域 是从以前使用模拟和委派的另一个提供商迁移而来的 我们已将操作系统升级到最新的 SQL 服务器 2017 WPF 应用程序 使用域凭据 gt Web 服务 IIS 10 上的
  • 在 SQL 数据库中存储“列表”的最正确方法是什么?

    因此 我读了很多关于如何将多个值存储到一个列中是一个坏主意 并且违反了数据标准化的第一条规则 令人惊讶的是 这不是 不要谈论数据标准化 所以我需要一些帮助 目前我正在为我工 作的地方设计一个 ASP NET 网页 我想根据此人所属的 Act
  • 对多个数据库执行 SQL 查询

    我知道我的帖子与该论坛中的其他帖子的标题非常相似 但我真的找不到我需要的答案 这是我的问题 我的 Windows Server 上运行着 SQL Server 在我的 SQL Server 中 我有大约 30 个数据库 它们都具有相同的表和

随机推荐

  • 无法使用 JavaScript 在 IE 上打印 iframe,而是打印父页面

    我有以下 JavaScript 代码 document ready function a print button click function event event preventDefault var print url print
  • XMLHttpRequest 无法从模拟器上的 android asset 文件夹加载文件

    我是混合开发的新手 我编写了一个启动 webview 的小应用程序 我在 asset 文件夹中复制了 XML JS 文件 应用程序在我的三星平板电脑上运行良好 但在模拟器上出现以下错误 05 30 06 09 07 080 I 铬 1245
  • @font-face导轨3.2

    我正在考虑尝试使用 font face 在我的 Rails 应用程序中使用 font squirrels 字体 希望这是解释它的正确方式 我对此还比较陌生 所以希望有人能就如何让它在 Rails 应用程序中工作提供建议 Thanks 好吧
  • Mysql 在使用 LIKE 搜索时连接两列

    我正在尝试进行 MySQL 查询 其中使用 LIKE 关键字根据搜索文本过滤记录 例如 如果用户搜索Illusion Softwares where Illusion是名字并且Softwares是姓氏 因此查询应搜索列 FirstName
  • 获取多行 UILabel 最后一行的宽度

    我有一个动态多行 UILabel 需要知道可见文本 不是标签 的文本结尾 X 坐标 以便我可以在文本后面显示一些内容 这可能吗 谢谢 您将能够使用 CoreText 框架更好地控制文本布局 查看文档 还有一些不错的开源东西已经为您做了很多艰
  • Android 布局土地不工作

    我一直在 stackoverflow 中查看问题 并尝试了我所见过的所有方法 但布局区域不起作用 在我的代码中我有和方法onConfigurationChanged Override public void onConfigurationC
  • 未知未知的本机崩溃

    我有一个完全用 Java 编写的应用程序 没有任何本机代码 并且我在开发人员控制台上两次收到崩溃报告 未知未知的本机崩溃 我不知道从哪里开始查找问题的根源 搜索仅在 Android 错误 NDK 使用或有错误的第三方库的情况下发现这种类型的
  • 在 Python 中一次更改列表中的多个项目

    我可以在Python中一次更改列表中的多个项目吗 问题1 例如 我的清单是 lst 0 0 0 0 0 我想要第三项和第五项变成99 我知道我可以做到 lst 2 99 lst 4 99 然而 有没有更简单的方法来做到这一点呢 问题2 在这
  • 如何在不安装 numpy 的情况下使用它?

    我通过控制台访问没有 root 或 sudo 权限的计算机 Python版本是2 5 2 numpy不可用 我无法使用 python setup py install user 机器上也没有任何可用的编译器 我可以以某种方式使用可用的编译包
  • 如何过滤 std::integer_sequence

    如果理论上我有一个整数序列 例如 std integer sequence
  • 冲突的红宝石

    我需要在我的项目中使用两个 gem 它们都声明 PDF 命名空间 pdf reader 和 htmldoc 有什么办法可以让他们一起愉快地玩耍吗 我能想到的唯一方法是重写我自己的 htmldoc 版本 为其提供不同的命名空间 基本上 你无能
  • 使用 javascript 按 id 对列表进行排序 [重复]

    这个问题在这里已经有答案了 我正在 iOS 上制作一个phonegap应用程序 需要按时间对列表进行排序 我尝试将时间添加到每个 li 项目的 id 中 然后根据 id 进行排序 ul li blub li li blaaah li li
  • Cronjob 还是 MySQL 事件?

    我必须每小时更新一次 MySQL 数据库 我想知道使用 cronjob 与 MySQL 事件相比有何优点 缺点 例如 哪个更快 哪个更安全 谢谢 我总是会进行 cron 工作 因为 这就是系统管理员所期望的 这一点不可低估 crontab
  • 如何从java中的静态初始化块返回

    我想从静态块返回 看起来 return 和 break 语句不起作用 有没有什么替代方案 我知道不好的解决方法可能是创建一个标志并检查该标志是否继续 我知道初始化块并不用于进行计算 而只是用于类加载期间的基本初始化 将代码委托给私有静态方法
  • 如何降级我的 Rails 版本?

    我使用的是 Rails 版本 4 2 0 如何降级到3 2 19版本 我尝试了以下方法 我打开命令提示符 I typed gem uninstall rails Rails 版本有一些选项 然后我选择了当前版本并按 Enter 然后输入ge
  • 使用 Google 电子表格访问 BigQuery

    我在互联网上查找如何在谷歌电子表格中导入bigquery数据 我找到了这个appscript示例 但它不起作用API不在同一级别 并且我没有找到如何在appscript中使用API 2或API beta1进行查询 function runQ
  • 如何更改使用 --bare 克隆的 git 存储库以匹配使用 --mirror 克隆的 git 存储库?

    这个问题与git 如何从其他存储库镜像文件 or 如何更新我的裸存储库 由于存储库克隆为 mirror是一个裸存储库 我可以使用以下命令克隆一个存储库吗 bare就像一个克隆人 mirror 是不是只要修改config文件就可以了 如果没有
  • Scala:将函数定义为正确的类型

    我一直在研究 Scala 代码 并遇到了一个我不明白的编译器错误 该代码生成一个由整数对组成的向量 然后尝试对其进行过滤 val L for x lt 1 to 5 yield x x x val f x Int y Int gt x gt
  • 在Java中通过复制构造函数复制对象而不影响原始对象

    我正在尝试复制一个对象 然后对其进行修改 而不更改原始对象 I found 这个解决方案似乎最好的方法是复制构造函数 根据我的理解 这会给我一个深层复制 与原始对象完全独立的对象 所以我尝试了 但是 我注意到 当执行以下代码时 它会影响从中
  • 带有计数和总和的 SQL Server 数据透视表

    我正在尝试让 SQL Server 数据透视表正常工作 它允许我对许多列 总共 6 列 进行计数然后求和 数据透视表的目的是汇总任意数量生产站点的在线调查问卷结果 有 6 个问题 可以有 3 个结果值 目标 行动和失败 我想做的是计算每个问