sql >> データベース >  >> RDS >> Sqlserver

1月のオンハイヤーの日数を数える

    declare @t table (id int, tool  varchar(10),    on_hire date,    off_hire date);
    insert into @t values
    (1,1,'2016-01-01','2016-01-10'),
    (2,1,'2016-01-15','2016-01-20'),
    (3,2,'2015-12-01','2016-01-10'),
    (4,3,'2016-01-20','2016-02-10'),
    (5,4,'2015-01-01','2017-01-10')
    
    
    select tool,  sum(datediff(d,on_hire,off_hire)) + 1 dayshired
    from
    (
    select tool,
            case 
                when on_hire < '2016-01-01' then '2016-01-01'
                else on_hire 
            end as on_hire,
            case 
                when off_hire > '2016-01-31' then '2016-01-31'
                else off_hire 
            end as off_hire         
    from @t
    ) s
    group by s.tool
      

    1. MySql。セルフジョインの使い方

    2. ユリウス日番号をDATEまたはTIMESTAMPに変換するOracle11.1のバグ

    3. 異なる呼び出しからの一時テーブルへのストアドプロシージャのミキシング結果

    4. 読めるけど更新できない