表1:
ID   订单号  工序编号  生产工厂 生产人员(小组) ....表2 :
ID           生产数量    时间 
表1中的ID我现在要实现以下两种查询结果 
a:
通过表1中的订单号+工序编号  来查询  8:00~ 20:00或是 20:00~8:00的产量  (夜班跨天)b:
当班(8:00~ 20:00或是 20:00~8:00)各个工厂的产能情况 按订单号、工序编号、生产工厂 进行分组谢谢!

解决方案 »

  1.   

    1.--比如说今天   8:00~ 20:00
    select * from 
    t1 ,t2
    where t1.id = t2.id 
    and t1.订单号 = '你的条件'
    and t1.工序编号 = '你的条件' 
    and t2.时间  between convert(datetime, convert(nvarchar(10,getdate(),120) + ' 08:00')
    and convert(datetime, convert(nvarchar(10,getdate(),120) + ' 20:00')
    --或者 20:00~8:00
    select * from 
    t1 ,t2
    where t1.id = t2.id 
    and t1.订单号 = '你的条件'
    and t1.工序编号 = '你的条件' 
    and t2.时间  between convert(datetime, convert(nvarchar(10,getdate(),120) + ' 20:00')
    and convert(datetime, convert(nvarchar(10,dateadd(day,1,getdate()),120) + ' 08:00')
      

  2.   

    2select 订单号,工序编号,生产工厂,sum(生产数量)
    from t1,t2
    where t1.id = t2.id 
    and t1.订单号 = '你的条件'
    and t1.工序编号 = '你的条件' 
    and t2.时间  between convert(datetime, convert(nvarchar(10,getdate(),120) + ' 08:00')
    and convert(datetime, convert(nvarchar(10,getdate(),120) + ' 20:00')
    group by 订单号,工序编号,生产工厂
    select 订单号,工序编号,生产工厂,sum(生产数量)
    from t1,t2
    where t1.id = t2.id 
    and t1.订单号 = '你的条件'
    and t1.工序编号 = '你的条件' 
    and t2.时间  between convert(datetime, convert(nvarchar(10,getdate(),120) + ' 20:00')
    and convert(datetime, convert(nvarchar(10,dateadd(day,1,getdate()),120) + ' 08:00')
    group by 订单号,工序编号,生产工厂