zoukankan      html  css  js  c++  java
  • day09 返修率

    select * from sdata.dbo.cost_detail
    drop table sdata.dbo.cost_detail_now


    --根据SERVICE_ORDER_LINE 取最小的值 因为一个订单 可能换的很多零件,只统计一个--
    select *
    into sdata.dbo.cost_detail_now
    from (
    select COUNTRY_ID
    , MACHINE_SERIAL_NUMBER
    ,SERVICE_ORDER_ID
    ,SERVICE_ORDER_LINE
    ,SERVICE_ORDER_CREATION_DATE
    ,PRODUCT_GROUP_OPS
    ,service_order_closure_date
    ,ROW_NUMBER() over(partition by MACHINE_SERIAL_NUMBER
    ,SERVICE_ORDER_ID order by SERVICE_ORDER_LINE asc) as rows
    from sdata.dbo.cost_detail) a
    where rows = 1
    select * from sdata.dbo.cost_detail_now


    --根据两次返修的日期 算返修率 根据型号统计两次返修相差多少天--
    drop table pdata.dbo.kpi_rrr
    select
    now1.COUNTRY_ID
    ,now1.MACHINE_SERIAL_NUMBER
    ,now1.PRODUCT_GROUP_OPS
    ,now1.SERVICE_ORDER_CREATION_DATE SERVICE_ORDER_CREATION_DATE_now
    ,now1.Service_Order_Closure_Date Service_Order_Closure_Date_now
    --,before.MACHINE_SERIAL_NUMBER
    ,now1.SERVICE_ORDER_ID
    --,before.SERVICE_ORDER_ID
    ,before.SERVICE_ORDER_CREATION_DATE SERVICE_ORDER_CREATION_DATE_before
    ,before.Service_Order_Closure_Date Service_Order_Closure_Date_before
    --相差多少天--
    ,DATEDIFF(dd,cast(case when before.SERVICE_ORDER_CREATION_DATE='00:00.0' then null else before.SERVICE_ORDER_CREATION_DATE end as date )
    ,cast(case when now1.SERVICE_ORDER_CREATION_DATE='00:00.0' then null else now1.SERVICE_ORDER_CREATION_DATE end as date )) day_count

    --统计>30或60或90的--
    ,case when DATEDIFF(dd,cast(case when before.SERVICE_ORDER_CREATION_DATE='00:00.0' then null else before.SERVICE_ORDER_CREATION_DATE end as date )
    ,cast(case when now1.SERVICE_ORDER_CREATION_DATE='00:00.0' then null else now1.SERVICE_ORDER_CREATION_DATE end as date ))>=30 then 1 else 0 end rrr_30
    ,case when DATEDIFF(dd,cast(case when before.SERVICE_ORDER_CREATION_DATE='00:00.0' then null else before.SERVICE_ORDER_CREATION_DATE end as date )
    ,cast(case when now1.SERVICE_ORDER_CREATION_DATE='00:00.0' then null else now1.SERVICE_ORDER_CREATION_DATE end as date ))>=60 then 1 else 0 end rrr_60
    ,case when DATEDIFF(dd,cast(case when before.SERVICE_ORDER_CREATION_DATE='00:00.0' then null else before.SERVICE_ORDER_CREATION_DATE end as date )
    ,cast(case when now1.SERVICE_ORDER_CREATION_DATE='00:00.0' then null else now1.SERVICE_ORDER_CREATION_DATE end as date ))>=90 then 1 else 0 end rrr_90

    into pdata.dbo.kpi_rrr
    from sdata.dbo.cost_detail_now now1
    left join sdata.dbo.cost_detail_now before
    on now1.MACHINE_SERIAL_NUMBER = before.MACHINE_SERIAL_NUMBER
    and cast(case when now1.SERVICE_ORDER_CREATION_DATE='00:00.0' then null else now1.SERVICE_ORDER_CREATION_DATE end as date )
    >= cast(case when before.SERVICE_ORDER_CREATION_DATE='00:00.0' then null else before.SERVICE_ORDER_CREATION_DATE end as date )
    where before.MACHINE_SERIAL_NUMBER is not null

    select * from pdata.dbo.kpi_rrr

    --根据 ops 日期 统计求和--
    select COUNTRY_ID
    ,PRODUCT_GROUP_OPS
    ,CONVERT(varchar(7),cast(SERVICE_ORDER_CREATION_DATE_now as date),120) month
    ,sum(rrr_30) rrr_30
    ,sum(rrr_60) rrr_60
    ,sum(rrr_90) rrr_90
    into pmart.dbo.kpi_rrr_sum
    from pdata.dbo.kpi_rrr
    group by
    COUNTRY_ID
    ,PRODUCT_GROUP_OPS
    ,CONVERT(varchar(7),cast(SERVICE_ORDER_CREATION_DATE_now as date),120)


    --按照rrr_30的进行分组排序--
    select*from (
    select *,
    ROW_NUMBER() over(partition by PRODUCT_GROUP_OPS order by rrr_30 desc ) as rov_sum
    from pmart.dbo.kpi_rrr_sum)a
    where rov_sum <=5


    --统计两个日期间的天数--
    select DATEDIFF(dd,'2008-11-29','2008-11-30')

  • 相关阅读:
    SQL Server中跨服务器跨数据库之间的数据增删改查
    Tomcat部署项目的方法
    java的位运算
    手机和邮箱格式验证
    Java实现List中某个对象属性中的字符串参数首字母进行排序
    springboot+dubbo+ZooKeeper+mybatis搭建分布式项目
    Java爬页面数据
    判断指定日期是否为节假日、双休日、工作日
    Java代码ping ip工具类
    Java生成压缩文件(zip、rar 格式
  • 原文地址:https://www.cnblogs.com/simly/p/9488442.html
Copyright © 2011-2022 走看看