DECLARE @ExceptionLocationId CHAR(12)='',
@ExceptionNumber CHAR(12)='',
@AssetName NVARCHAR(100)='',
@WorkcenterId NVARCHAR(100)='',
@ExceptionTypeName NVARCHAR(100)='',
@ProductionExceptionManagementId CHAR (12)  --主表主键ID

---创建临时表
  --------创建故障维修记录临时表-------------------------------
        IF OBJECT_ID('tempdb..#TB') IS NOT NULL

DROP TABLE #TB
        
        CREATE TABLE #TB(
        字段1 NVARCHAR(100),      ---场地
        字段2 NVARCHAR(200), --生产线
        字段3 NVARCHAR(200),  --设备名称
        
        )
   ----定义游标---
    DECLARE PemID_cursor CURSOR LOCAL
        FOR
        SELECT ProductionExceptionManagementId FROM dbo.ProductionExceptionManagement WHERE ExceptionStatusId<>''  ---状态不能为空
        FOR READ ONLY
        ---打开游标
        OPEN PemID_cursor
        ---读取数据
        FETCH NEXT FROM PemID_cursor
        INTO @ProductionExceptionManagementId
        WHILE @@FETCH_STATUS=0
        BEGIN

SELECT 
    @ExceptionLocationId = ExceptionLocationId 
                            FROM ExceptionLocation Ex LEFT OUTER JOIN  dbo.ProductionExceptionManagement Pd ON Ex.FactoryId=pd.FactoryId AND Ex.SiteId=Pd.SiteId
                            AND EX.WorkcenterId=Pd.WorkcenterId WHERE Ex.ExceptionTypeId=Pd.ExceptionTypeId AND ProductionExceptionManagementId=@ProductionExceptionManagementId
    -----查找单号-----------------
     SET @ExceptionNumber=(SELECT ExceptionNumber FROM dbo.ProductionExceptionManagement WHERE ProductionExceptionManagementid=@ProductionExceptionManagementId)
    
    ---主从表中需要查找匹配的字段值1,字段值2,字段值3......---

SET @字段1=()
   SET @字段2=()
  ...........

--- XCWaitTime AS 现场恢复等待时长
     --SET @XCWaitTime=(SELECT DATEDIFF(MINUTE,@FailureTime,@XCHandleTime))
    SET @XCWaitTime=CAST ( CAST ( DATEDIFF ( ss, @FailureTime, @XCHandleTime ) / ( 60 * 60 * 24 ) AS INT ) AS VARCHAR ) + '天' + CAST ( CAST ( DATEDIFF ( ss, @FailureTime, @XCHandleTime ) % 86400 / 3600 AS INT ) AS VARCHAR ) + '小时' + CAST ( CAST ( DATEDIFF ( ss, @FailureTime, @XCHandleTime ) % 3600 / 60 AS INT ) AS VARCHAR ) + '分' + CAST ( CAST ( DATEDIFF ( ss, @FailureTime, @XCHandleTime ) % 60 AS INT ) AS VARCHAR ) + '秒' 
    ---现场恢复等待时长----
    ---MaintenanceDuration AS 修护课维修时长
    ---SET  @MaintenanceDuration=(SELECT DATEDIFF(MINUTE,@HandleTime,@XCHandleTime))
    SET @MaintenanceDuration=CAST ( CAST ( DATEDIFF ( ss, @HandleTime, @XCHandleTime ) / ( 60 * 60 * 24 ) AS INT ) AS VARCHAR ) + '天' + CAST ( CAST ( DATEDIFF ( ss, @HandleTime, @XCHandleTime ) % 86400 / 3600 AS INT ) AS VARCHAR ) + '小时' + CAST ( CAST ( DATEDIFF ( ss, @HandleTime, @XCHandleTime ) % 3600 / 60 AS INT ) AS VARCHAR ) + '分' + CAST ( CAST ( DATEDIFF ( ss, @HandleTime, @XCHandleTime ) % 60 AS INT ) AS VARCHAR ) + '秒' 
    ---修护课维修时长
    ---主从表中需要查找匹配的字段值1,字段值2,字段值3......
      --------临时表插入值-------------------------------
     INSERT INTO #TB    (
            字段1 ,
            字段2 , 
            字段3,
            .....
            )
            SELECT  
            @字段1 ,
            @字段2 , 
            @字段3 
            .....
            
          --进入下一行数据--
            
            FETCH NEXT FROM PemID_cursor
            INTO @ProductionExceptionManagementId
             
            END
            ---关闭游标--------------
            CLOSE PemID_cursor
            ---释放游标------------------
            DEALLOCATE PemID_cursor

----统计展示重复数据次数前五----

SELECT TOP 5 字段1,COUNT(0) AS 次数  FROM #TB WHERE 字段2='自动化D/C1线' GROUP BY 字段1 HAVING COUNT(字段1)>1  ORDER BY 次数 DESC

----设备停机时长----
           SELECT   TOP 5 字段1 AS 名称1,  字段3 AS 名称3 FROM #TB   WHERE  字段2='自动化D/C4线' ORDER BY 字段2 desc

----删除临时表---

DROP TABLE #TB

SQL临时表|游标|两个日期之间计算时差|临时表条件查询相关推荐

  1. JS两个日期之间计算时间差

    一.计算两个日期之间相差的毫秒数(也就是两个日期的时间戳差) 这里有几种常见的JS方式,来获得日期的毫秒数. 1.日期对象的 getTime();方法 <script>var date = ...

  2. JS两个日期之间计算时间差(返回:天数,小时,分钟,秒数)

    做的一个投票系统, 记录投票已经开始多长时间了, 需要从数据库取出开始时间,与当前时间相比较,获取到时间差 import moment from "moment";const du ...

  3. 怎么用计算机计算年月份,如何使用Excel计算两个日期之间的月数?

    一.这可以通过DATEDIF函数完成. 二. DATEDIF函数的定义 DATEDIF函数是Excel中的隐藏函数,而不是帮助和插入公式中的隐藏函数.返回两个日期之间的年\月\日间隔的数量. DATE ...

  4. 【SQL开发实战技巧】系列(十七):数据仓库中时间类型操作(初级)确定两个日期之间的工作天数、计算—年中周内各日期出现次数、确定当前记录和下一条记录之间相差的天数

    系列文章目录 [SQL开发实战技巧]系列(一):关于SQL不得不说的那些事 [SQL开发实战技巧]系列(二):简单单表查询 [SQL开发实战技巧]系列(三):SQL排序的那些事 [SQL开发实战技巧] ...

  5. sql年月日加减法,计算两个日期之间的天数

    1.年月日加减法(时间字段为  hiredate,表名为 emp) DB2 selecthiredate -5 day as hd_sub_5day,hiredate +5 day as hd_add ...

  6. SQL计算两个日期之间的工作日天数,去除法定节假日和周末

    项目要求:需要计算两个日期之间的工作日天数,包含元旦.五一.十一等法定假日. 网上查询很多SQL函数,最终发现都不太理想,例如国庆放假可能会调休,周末也要上班.所以唯一的解决方案是建立一张工作日时间表 ...

  7. SQL计算两个日期之间的工作天数

    if exists (select * from dbo.sysobjects where id = object_id(N'[tb_Holiday]') and OBJECTPROPERTY(id, ...

  8. C#计算两个日期之间相差的天数

    C#计算两个日期之间相差的天数 private int DateDiff(DateTime dateStart, DateTime dateEnd) { DateTime start = Conver ...

  9. Oracle 计算两个日期之间的年月、日期,月份数、天数

    目录 Oracle 计算两个日期之间的月份数.月份列表.天数.日期列表 Oracle 计算两个日期之间的月份数.月份列表.天数.日期列表 获取日期之间的月数(包括自身) 时间:2019-05-30 至 ...

最新文章

  1. [C++再学习系列] 前置++与后置++
  2. nagios搭建与配置
  3. sharedUserId
  4. npm WARN saveError ENOENT: no such file or directory, open ‘/Users/....../package.json‘的解决办法
  5. 【NOIP2007】第三题·守望者的逃离
  6. 《.NET应用架构设计:原则、模式与实践》新书博客--试读-1.1.2 架构师的职责
  7. 惠新宸php教程_惠新宸:首位国人加入PHP语言官方开发组
  8. Loj#6039-「雅礼集训 2017 Day5」珠宝【四边形不等式,dp】
  9. 工业以太网交换机和普通商用交换机的区别
  10. pta 习题集5-19 列车厢调度
  11. 控制台应用程序中Main函数的args参数
  12. 科沃斯扫地机器人阿尔法_科沃斯(Ecovacs)阿尔法地宝简单开箱
  13. 如何在Github上找到“最受欢迎的存储库”? [关闭]
  14. 婚纱摄影后期修片,PS婚纱写真后期…
  15. 该去大公司做螺丝钉,还是去小公司发光发热?
  16. 独立站运营 | FaceBook营销神器——聊天机器人ManyChat
  17. 发票专用驱动sjz_收藏!增值税发票(发票勾选)选择确认平台使用手册
  18. android头像相册/拍照选取,裁剪及上传综合案例
  19. 【R语言科研绘图】--- 柱状图
  20. 从CSDN到GitChat

热门文章

  1. vm15虚拟机没声音常见解决方法与设置了声卡也没声音
  2. dependencies 和 devDependencies区别
  3. 【Word与MathType】出现报错并解决:Please restart Word to load MathType addin properly和“错误53,文件未找到MathPage.WLL”
  4. POI java excel 生成下拉列表
  5. Windows + Ubuntu 18.04 双系统安装教程
  6. 2021-2022学年广州市广大附中七年级第一学期期中考试英语试题
  7. 【C语言】库函数标准详细解读和EOF术语
  8. 人性的弱点-读书总结
  9. 将时谐电磁场引入工程电磁场的意义_《工程电磁场》复习提纲
  10. 信阳市少年计算机学校,信阳市胜利路学校: 奖杯璀璨 少年奋进