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')

  • 相关阅读:
    Java Web 网络留言板2 JDBC数据源 (连接池技术)
    Java Web 网络留言板3 CommonsDbUtils
    Java Web ConnectionPool (连接池技术)
    Java Web 网络留言板
    Java Web JDBC数据源
    Java Web CommonsUtils (数据库连接方法)
    Servlet 起源
    Hibernate EntityManager
    Hibernate Annotation (Hibernate 注解)
    wpf控件设计时支持(1)
  • 原文地址:https://www.cnblogs.com/simly/p/9488442.html
Copyright © 2011-2022 走看看