繁体   English   中英

SQL SSMS 2017详细结果

[英]SQL SSMS 2017 Detailed result

我是SQL的新手,所以我想问一个可能的解决方案,如何创建显示期望结果的查询。 有一张表,其中数据是从一个主PLC连续获取的,因此所有数据都集中在一张表中。 每1个班次会有一堆数据(大约五百万)。 在“ Op”列中,由机器的ID表示的机器(Op =机器的ID)。 机器大约是1到218。每台机器的周期时间分为开始过程(T1),持续时间(T2),结束过程(T3)和结果。 “结果”可以解释为0-表示正常,1-表示不正常,2-空托盘,3-托盘自由流动。 这些是PLC直接报告到数据库表中的结果。

https://i.ibb.co/nkmLkHG/palletOP.png

我已经尝试了基本的语句来为精确的记录状态(0、1、2、3)和精确的机器计算这些结果。 可以,但不理想。

SELECT Count(*) as Result0
FROM PalletOperations
where Op = 1 and Result = 0

预期的结果是显示从1到218的每台计算机的完整列表,其中有多少结果计为0、1、2和3。其他列与此时间无关。 主要目标是显示结果,因为每台机器都有自己的行,并带有计数状态结果的预期数据。 如果有218台计算机,那么我需要分别从1到218行生成218台计算机的结果。 如上所述,每一行都应包含Op(名称1,2,3,4 .... 218),其中包含状态0、1、2、3的计数结果列。

欢迎任何建议

我认为您需要条件聚合:

SELECT op,
       SUM(CASE WHEN Result = 0 THEN 1 ELSE 0 END) as result_0,
       SUM(CASE WHEN Result = 1 THEN 1 ELSE 0 END) as result_1,
       SUM(CASE WHEN Result = 2 THEN 1 ELSE 0 END) as result_2,
       SUM(CASE WHEN Result = 3 THEN 1 ELSE 0 END) as result_3
FROM PalletOperations
GROUP BY op;

您可以使用以下sql语句获取每台计算机每个结果的结果计数

SELECT op,Result, count(*)
FROM PalletOperations
GROUP BY op,Result;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM