• 周数据转换为天数据的一个Sql数据查询


    以前碰到的一个表,存储时间按照周为单位存储,而却需要按照天为单位使用。为了减少程序复杂度,便增加了多层查询,提高Sql查询结果可用性。

    select 
        (week_no-week_start)*7+week_day-week_day_start pp,
        dateadd(day,(week_no-week_start)*7+week_day-week_day_start,Month) the_day,
         *
    from   
        (
        select
            case DatePart(w,Month) when 7 then 1 else DatePart(w,Month)+1 end as week_day_start,
            1 week_start,
            * 
        from
            (
            SELECT
                [CompanyID]
                ,[EmployeeNO]
                ,[Year]
                ,[Month]
                ,[WEEK_NO]
                ,[Order_NO]
                ,[Sell_NO]
                ,[WorkCode]
                ,1 as WEEK_DAY
                ,[WorkHours_MON]
                ,[H_MON] as H
                ,[M_MON] as M
                ,[GroupCode]
             FROM
                [CardTable]
            union
            SELECT
                [CompanyID]
                ,[EmployeeNO]
                ,[Year]
                ,[Month]
                ,[WEEK_NO]
                ,[Order_NO]
                ,[Sell_NO]
                ,[WorkCode]
                ,2 as WEEK_DAY
                ,[WorkHours_TUE] as WorkHours
                ,[H_TUE] as H
                ,[M_TUE] as M
                ,[GroupCode]
              FROM
                [CardTable]
            union
            SELECT
                [CompanyID]
                ,[EmployeeNO]
                ,[Year]
                ,[Month]
                ,[WEEK_NO]
                ,[Order_NO]
                ,[Sell_NO]
                ,[WorkCode]
                ,3 as WEEK_DAY
                ,[WorkHours_WED] as WorkHours
                ,[H_WED] as H
                ,[M_WED] as M
                ,[GroupCode]
              FROM
                [CardTable]
            union
            SELECT
                [CompanyID]
                ,[EmployeeNO]
                ,[Year]
                ,[Month]
                ,[WEEK_NO]
                ,[Order_NO]
                ,[Sell_NO]
                ,[WorkCode]
                ,4 as WEEK_DAY
                ,[WorkHours_THU] as WorkHours
                ,[H_THU] as H
                ,[M_THU] as M
                ,[GroupCode]
            FROM
                [CardTable]
            union
            SELECT
                [CompanyID]
                ,[EmployeeNO]
                ,[Year]
                ,[Month]
                ,[WEEK_NO]
                ,[Order_NO]
                ,[Sell_NO]
                ,[WorkCode]
                ,5 as WEEK_DAY
                ,[WorkHours_FRI] as WorkHours
                ,[H_FRI] as H
                ,[M_FRI] as M
                ,[GroupCode]
            FROM
                [CardTable]
            union
            SELECT
                [CompanyID]
                ,[EmployeeNO]
                ,[Year]
                ,[Month]
                ,[WEEK_NO]
                ,[Order_NO]
                ,[Sell_NO]
                ,[WorkCode]
                ,6 as WEEK_DAY
                ,[WorkHours_SAT] as WorkHours
                ,[H_SAT] as H
                ,[M_SAT] as M
                ,[GroupCode]
              FROM
                [CardTable]
            union
            SELECT
                [CompanyID]
                ,[EmployeeNO]
                ,[Year]
                ,[Month]
                ,[WEEK_NO]
                ,[Order_NO]
                ,[Sell_NO]
                ,[WorkCode]
                ,7 as WEEK_DAY
                ,[WorkHours_SUN] as WorkHours
                ,[H_SUN] as H
                ,[M_SUN] as M
                ,[GroupCode]
            FROM
                [CardTable]
            ) temp1
    --    where
    --    week_no=6
        )temp2
    --where not( week_no=week_start and week_day<week_day_start)
    order by pp

  • 相关阅读:
    【转】 史上最详尽的平衡树(splay)讲解与模板(非指针版spaly)
    HihoCoder1325 : 平衡树·Treap(附STL版本)
    HihoCOder1323 : 回文字符串(区间DP)
    从分布式一致性算法到区块链共识机制
    Nacos Committer 张龙:Nacos Sync 的设计原理和规划
    MaxCompute Studio使用心得系列7——作业对比
    阿里云MaxCompute 2019-4月刊
    DDoS攻击新趋势:海量移动设备成为新一代肉鸡
    胡喜:从 BASIC 到 basic ,蚂蚁金服技术要解决两个基本的计算问题
    阿里开发者招聘节 | 面试题14:如何实现两金额数据相加(最多小数点两位)
  • 原文地址:https://www.cnblogs.com/dongzhiquan/p/1994517.html
Copyright © 2020-2023  润新知