DECLARE @date DATETIME = '2017-12-26 00:00:00';
DECLARE @date2 DATETIME = DATEADD(DAY, 1, @date);
DECLARE @1 TABLE ( subdate INT );
DECLARE @result TABLE
(
Stype VARCHAR(50) ,
count1 INT ,
count2 INT ,
count3 INT ,
count4 INT ,
count5 INT ,
percent1 DECIMAL(10, 2) ,
percent2 DECIMAL(10, 2) ,
percent3 DECIMAL(10, 2) ,
percent4 DECIMAL(10, 2)
);
INSERT INTO @1

SELECT DATEDIFF(HOUR, a.ReceivedTime, DomesticWarehouseInTime) AS subdate
FROM TWX_TransportFromMst a WITH ( NOLOCK )
JOIN dbo.TWX_TransportOrder b ON a.TransportOrderCode = b.TransportOrderCode
WHERE b.Country = '中国台湾'
AND b.CarrierType = 'ZHIYUN'
AND a.ReceivedTime BETWEEN @date AND @date2;

INSERT @result
SELECT '台湾直送' ,
a ,
a1 ,
a2 ,
a3 ,
a4 ,
a1 * 100.00 / ( a + a5 ) ,
( a1 + a2 ) * 100.00 / ( a + a5 ) ,
( a1 + a2 + a3 ) * 100.00 / ( a + a5 ) ,
a4 * 100.00 / ( a + a5 )
FROM ( SELECT ( SELECT COUNT(1)
FROM @1
) a ,
( SELECT COUNT(1)
FROM @1
WHERE subdate > -1000
AND subdate <= 8
) a1 ,
( SELECT COUNT(1)
FROM @1
WHERE subdate > 8
AND subdate <= 24
) a2 ,
( SELECT COUNT(1)
FROM @1
WHERE subdate > 24
AND subdate <= 48
) a3 ,
( SELECT COUNT(1)
FROM @1
WHERE subdate > 48
) a4 ,
( CASE WHEN ( SELECT COUNT(1)
FROM @1
) > 0 THEN 0
ELSE 1
END ) a5
) b;
DELETE FROM @1;
INSERT INTO @1
SELECT DATEDIFF(HOUR, a.ReceivedTime, DomesticWarehouseInTime) AS subdate
FROM TWX_TransportFromMst a WITH ( NOLOCK )
WHERE a.Country = '新加坡'
AND a.ReceivedTime BETWEEN @date AND @date2;
INSERT @result
SELECT '新加坡' ,
a ,
a1 ,
a2 ,
a3 ,
a4 ,
a1 * 100.00 / ( a + a5 ) ,
( a1 + a2 ) * 100.00 / ( a + a5 ) ,
( a1 + a2 + a3 ) * 100.00 / ( a + a5 ) ,
a4 * 100.00 / ( a + a5 )
FROM ( SELECT ( SELECT COUNT(1)
FROM @1
) a ,
( SELECT COUNT(1)
FROM @1
WHERE subdate > -1000
AND subdate <= 8
) a1 ,
( SELECT COUNT(1)
FROM @1
WHERE subdate > 8
AND subdate <= 24
) a2 ,
( SELECT COUNT(1)
FROM @1
WHERE subdate > 24
AND subdate <= 48
) a3 ,
( SELECT COUNT(1)
FROM @1
WHERE subdate > 48
) a4 ,
( CASE WHEN ( SELECT COUNT(1)
FROM @1
) > 0 THEN 0
ELSE 1
END ) a5
) b;
DELETE FROM @1;
INSERT INTO @1
SELECT DATEDIFF(HOUR, a.ReceivedTime, DomesticWarehouseInTime) AS subdate
FROM TWX_TransportFromMst a WITH ( NOLOCK )
WHERE a.Country = '马来西亚'
AND a.Province NOT IN ( '纳闵', '沙捞越', '沙巴' )
AND a.ReceivedTime BETWEEN @date AND @date2;
INSERT @result
SELECT '马来西亚(西)' ,
a ,
a1 ,
a2 ,
a3 ,
a4 ,
a1 * 100.00 / ( a + a5 ) ,
( a1 + a2 ) * 100.00 / ( a + a5 ) ,
( a1 + a2 + a3 ) * 100.00 / ( a + a5 ) ,
a4 * 100.00 / ( a + a5 )
FROM ( SELECT ( SELECT COUNT(1)
FROM @1
) a ,
( SELECT COUNT(1)
FROM @1
WHERE subdate > -1000
AND subdate <= 8
) a1 ,
( SELECT COUNT(1)
FROM @1
WHERE subdate > 8
AND subdate <= 24
) a2 ,
( SELECT COUNT(1)
FROM @1
WHERE subdate > 24
AND subdate <= 48
) a3 ,
( SELECT COUNT(1)
FROM @1
WHERE subdate > 48
) a4 ,
( CASE WHEN ( SELECT COUNT(1)
FROM @1
) > 0 THEN 0
ELSE 1
END ) a5
) b;
DELETE FROM @1;
INSERT INTO @1
SELECT DATEDIFF(HOUR, a.ReceivedTime, DomesticWarehouseInTime) AS subdate
FROM TWX_TransportFromMst a WITH ( NOLOCK )
WHERE a.Country = '马来西亚'
AND a.Province IN ( '纳闵', '沙捞越', '沙巴' )
AND a.ReceivedTime BETWEEN @date AND @date2;
INSERT @result
SELECT '马来西亚(东)' ,
a ,
a1 ,
a2 ,
a3 ,
a4 ,
a1 * 100.00 / ( a + a5 ) ,
( a1 + a2 ) * 100.00 / ( a + a5 ) ,
( a1 + a2 + a3 ) * 100.00 / ( a + a5 ) ,
a4 * 100.00 / ( a + a5 )
FROM ( SELECT ( SELECT COUNT(1)
FROM @1
) a ,
( SELECT COUNT(1)
FROM @1
WHERE subdate > -1000
AND subdate <= 8
) a1 ,
( SELECT COUNT(1)
FROM @1
WHERE subdate > 8
AND subdate <= 24
) a2 ,
( SELECT COUNT(1)
FROM @1
WHERE subdate > 24
AND subdate <= 48
) a3 ,
( SELECT COUNT(1)
FROM @1
WHERE subdate > 48
) a4 ,
( CASE WHEN ( SELECT COUNT(1)
FROM @1
) > 0 THEN 0
ELSE 1
END ) a5
) b;
DELETE FROM @1;
INSERT INTO @1
SELECT DATEDIFF(HOUR, a.ReceivedTime, DomesticWarehouseInTime) AS subdate
FROM TWX_TransportFromMst a WITH ( NOLOCK )
WHERE a.Country = '澳大利亚'
AND a.ReceivedTime BETWEEN @date AND @date2;
INSERT @result
SELECT '澳大利亚' ,
a ,
a1 ,
a2 ,
a3 ,
a4 ,
a1 * 100.00 / ( a + a5 ) ,
( a1 + a2 ) * 100.00 / ( a + a5 ) ,
( a1 + a2 + a3 ) * 100.00 / ( a + a5 ) ,
a4 * 100.00 / ( a + a5 )
FROM ( SELECT ( SELECT COUNT(1)
FROM @1
) a ,
( SELECT COUNT(1)
FROM @1
WHERE subdate > -1000
AND subdate <= 8
) a1 ,
( SELECT COUNT(1)
FROM @1
WHERE subdate > 8
AND subdate <= 24
) a2 ,
( SELECT COUNT(1)
FROM @1
WHERE subdate > 24
AND subdate <= 48
) a3 ,
( SELECT COUNT(1)
FROM @1
WHERE subdate > 48
) a4 ,
( CASE WHEN ( SELECT COUNT(1)
FROM @1
) > 0 THEN 0
ELSE 1
END ) a5
) b;
DELETE FROM @1;
INSERT INTO @1
SELECT DATEDIFF(HOUR, a.ReceivedTime, DomesticWarehouseInTime) AS subdate
FROM TWX_TransportFromMst a WITH ( NOLOCK )
WHERE a.Country = '新加坡'
AND a.ShipType = 0
AND a.OrderFrom = 15
AND a.ReceivedTime BETWEEN @date AND @date2;
INSERT @result
SELECT 'Lazada新加坡空运' ,
a ,
a1 ,
a2 ,
a3 ,
a4 ,
a1 * 100.00 / ( a + a5 ) ,
( a1 + a2 ) * 100.00 / ( a + a5 ) ,
( a1 + a2 + a3 ) * 100.00 / ( a + a5 ) ,
a4 * 100.00 / ( a + a5 )
FROM ( SELECT ( SELECT COUNT(1)
FROM @1
) a ,
( SELECT COUNT(1)
FROM @1
WHERE subdate > -1000
AND subdate <= 8
) a1 ,
( SELECT COUNT(1)
FROM @1
WHERE subdate > 8
AND subdate <= 24
) a2 ,
( SELECT COUNT(1)
FROM @1
WHERE subdate > 24
AND subdate <= 48
) a3 ,
( SELECT COUNT(1)
FROM @1
WHERE subdate > 48
) a4 ,
( CASE WHEN ( SELECT COUNT(1)
FROM @1
) > 0 THEN 0
ELSE 1
END ) a5
) b;
DELETE FROM @1;
INSERT INTO @1
SELECT DATEDIFF(HOUR, a.ReceivedTime, DomesticWarehouseInTime) AS subdate
FROM TWX_TransportFromMst a WITH ( NOLOCK )
WHERE a.Country = '马来西亚'
AND a.ShipType = 0
AND a.OrderFrom = 15
AND a.ReceivedTime BETWEEN @date AND @date2;
INSERT @result
SELECT 'Lazada马来西亚空运' ,
a ,
a1 ,
a2 ,
a3 ,
a4 ,
a1 * 100.00 / ( a + a5 ) ,
( a1 + a2 ) * 100.00 / ( a + a5 ) ,
( a1 + a2 + a3 ) * 100.00 / ( a + a5 ) ,
a4 * 100.00 / ( a + a5 )
FROM ( SELECT ( SELECT COUNT(1)
FROM @1
) a ,
( SELECT COUNT(1)
FROM @1
WHERE subdate > -1000
AND subdate <= 8
) a1 ,
( SELECT COUNT(1)
FROM @1
WHERE subdate > 8
AND subdate <= 24
) a2 ,
( SELECT COUNT(1)
FROM @1
WHERE subdate > 24
AND subdate <= 48
) a3 ,
( SELECT COUNT(1)
FROM @1
WHERE subdate > 48
) a4 ,
( CASE WHEN ( SELECT COUNT(1)
FROM @1
) > 0 THEN 0
ELSE 1
END ) a5
) b;
DELETE FROM @1;
INSERT INTO @1
SELECT DATEDIFF(HOUR, a.ReceivedTime, DomesticWarehouseInTime) AS subdate
FROM TWX_TransportFromMst a WITH ( NOLOCK )
WHERE a.Country = '新加坡'
AND a.TooWeight <> 1
AND a.ShipType = 1
AND a.OrderFrom = 15
AND a.ReceivedTime BETWEEN @date AND @date2;
INSERT @result
SELECT 'Lazada新加坡海运(小货)' ,
a ,
a1 ,
a2 ,
a3 ,
a4 ,
a1 * 100.00 / ( a + a5 ) ,
( a1 + a2 ) * 100.00 / ( a + a5 ) ,
( a1 + a2 + a3 ) * 100.00 / ( a + a5 ) ,
a4 * 100.00 / ( a + a5 )
FROM ( SELECT ( SELECT COUNT(1)
FROM @1
) a ,
( SELECT COUNT(1)
FROM @1
WHERE subdate > -1000
AND subdate <= 8
) a1 ,
( SELECT COUNT(1)
FROM @1
WHERE subdate > 8
AND subdate <= 24
) a2 ,
( SELECT COUNT(1)
FROM @1
WHERE subdate > 24
AND subdate <= 48
) a3 ,
( SELECT COUNT(1)
FROM @1
WHERE subdate > 48
) a4 ,
( CASE WHEN ( SELECT COUNT(1)
FROM @1
) > 0 THEN 0
ELSE 1
END ) a5
) b;
DELETE FROM @1;
INSERT INTO @1
SELECT DATEDIFF(HOUR, a.ReceivedTime, DomesticWarehouseInTime) AS subdate
FROM TWX_TransportFromMst a WITH ( NOLOCK )
WHERE a.Country = '新加坡'
AND a.TooWeight = 1
AND a.ShipType = 1
AND a.OrderFrom = 15
AND a.ReceivedTime BETWEEN @date AND @date2;
INSERT @result
SELECT 'Lazada新加坡海运(大货)' ,
a ,
a1 ,
a2 ,
a3 ,
a4 ,
a1 * 100.00 / ( a + a5 ) ,
( a1 + a2 ) * 100.00 / ( a + a5 ) ,
( a1 + a2 + a3 ) * 100.00 / ( a + a5 ) ,
a4 * 100.00 / ( a + a5 )
FROM ( SELECT ( SELECT COUNT(1)
FROM @1
) a ,
( SELECT COUNT(1)
FROM @1
WHERE subdate > -1000
AND subdate <= 8
) a1 ,
( SELECT COUNT(1)
FROM @1
WHERE subdate > 8
AND subdate <= 24
) a2 ,
( SELECT COUNT(1)
FROM @1
WHERE subdate > 24
AND subdate <= 48
) a3 ,
( SELECT COUNT(1)
FROM @1
WHERE subdate > 48
) a4 ,
( CASE WHEN ( SELECT COUNT(1)
FROM @1
) > 0 THEN 0
ELSE 1
END ) a5
) b;
DELETE FROM @1;
INSERT INTO @1
SELECT DATEDIFF(HOUR, a.ReceivedTime, DomesticWarehouseInTime) AS subdate
FROM TWX_TransportFromMst a WITH ( NOLOCK )
WHERE a.Country = '马来西亚'
AND a.TooWeight <> 1
AND a.ShipType = 1
AND a.OrderFrom = 15
AND a.ReceivedTime BETWEEN @date AND @date2;
INSERT @result
SELECT 'Lazada马来西亚海运(小货)' ,
a ,
a1 ,
a2 ,
a3 ,
a4 ,
a1 * 100.00 / ( a + a5 ) ,
( a1 + a2 ) * 100.00 / ( a + a5 ) ,
( a1 + a2 + a3 ) * 100.00 / ( a + a5 ) ,
a4 * 100.00 / ( a + a5 )
FROM ( SELECT ( SELECT COUNT(1)
FROM @1
) a ,
( SELECT COUNT(1)
FROM @1
WHERE subdate > -1000
AND subdate <= 8
) a1 ,
( SELECT COUNT(1)
FROM @1
WHERE subdate > 8
AND subdate <= 24
) a2 ,
( SELECT COUNT(1)
FROM @1
WHERE subdate > 24
AND subdate <= 48
) a3 ,
( SELECT COUNT(1)
FROM @1
WHERE subdate > 48
) a4 ,
( CASE WHEN ( SELECT COUNT(1)
FROM @1
) > 0 THEN 0
ELSE 1
END ) a5
) b;
DELETE FROM @1;
INSERT INTO @1
SELECT DATEDIFF(HOUR, a.ReceivedTime, DomesticWarehouseInTime) AS subdate
FROM TWX_TransportFromMst a WITH ( NOLOCK )
WHERE a.Country = '马来西亚'
AND a.TooWeight = 1
AND a.ShipType = 1
AND a.OrderFrom = 15
AND a.ReceivedTime BETWEEN @date AND @date2;
INSERT @result
SELECT 'Lazada马来西亚海运(大货)' ,
a ,
a1 ,
a2 ,
a3 ,
a4 ,
a1 * 100.00 / ( a + a5 ) ,
( a1 + a2 ) * 100.00 / ( a + a5 ) ,
( a1 + a2 + a3 ) * 100.00 / ( a + a5 ) ,
a4 * 100.00 / ( a + a5 )
FROM ( SELECT ( SELECT COUNT(1)
FROM @1
) a ,
( SELECT COUNT(1)
FROM @1
WHERE subdate > -1000
AND subdate <= 8
) a1 ,
( SELECT COUNT(1)
FROM @1
WHERE subdate > 8
AND subdate <= 24
) a2 ,
( SELECT COUNT(1)
FROM @1
WHERE subdate > 24
AND subdate <= 48
) a3 ,
( SELECT COUNT(1)
FROM @1
WHERE subdate > 48
) a4 ,
( CASE WHEN ( SELECT COUNT(1)
FROM @1
) > 0 THEN 0
ELSE 1
END ) a5
) b;
DELETE FROM @1;
INSERT INTO @1
SELECT DATEDIFF(HOUR, a.ReceivedTime, DomesticWarehouseInTime) AS subdate
FROM TWX_TransportFromMst a WITH ( NOLOCK )
WHERE a.Country = '新西兰'
AND a.ReceivedTime BETWEEN @date AND @date2;
INSERT @result
SELECT '新西兰' ,
a ,
a1 ,
a2 ,
a3 ,
a4 ,
a1 * 100.00 / ( a + a5 ) ,
( a1 + a2 ) * 100.00 / ( a + a5 ) ,
( a1 + a2 + a3 ) * 100.00 / ( a + a5 ) ,
a4 * 100.00 / ( a + a5 )
FROM ( SELECT ( SELECT COUNT(1)
FROM @1
) a ,
( SELECT COUNT(1)
FROM @1
WHERE subdate > -1000
AND subdate <= 8
) a1 ,
( SELECT COUNT(1)
FROM @1
WHERE subdate > 8
AND subdate <= 24
) a2 ,
( SELECT COUNT(1)
FROM @1
WHERE subdate > 24
AND subdate <= 48
) a3 ,
( SELECT COUNT(1)
FROM @1
WHERE subdate > 48
) a4 ,
( CASE WHEN ( SELECT COUNT(1)
FROM @1
) > 0 THEN 0
ELSE 1
END ) a5
) b;
DELETE FROM @1;
INSERT INTO @1
SELECT DATEDIFF(HOUR, a.ReceivedTime, DomesticWarehouseInTime) AS subdate
FROM TWX_TransportFromMst a WITH ( NOLOCK )
WHERE a.Country = '日本'
AND a.ReceivedTime BETWEEN @date AND @date2;
INSERT @result
SELECT '日本' ,
a ,
a1 ,
a2 ,
a3 ,
a4 ,
a1 * 100.00 / ( a + a5 ) ,
( a1 + a2 ) * 100.00 / ( a + a5 ) ,
( a1 + a2 + a3 ) * 100.00 / ( a + a5 ) ,
a4 * 100.00 / ( a + a5 )
FROM ( SELECT ( SELECT COUNT(1)
FROM @1
) a ,
( SELECT COUNT(1)
FROM @1
WHERE subdate > -1000
AND subdate <= 8
) a1 ,
( SELECT COUNT(1)
FROM @1
WHERE subdate > 8
AND subdate <= 24
) a2 ,
( SELECT COUNT(1)
FROM @1
WHERE subdate > 24
AND subdate <= 48
) a3 ,
( SELECT COUNT(1)
FROM @1
WHERE subdate > 48
) a4 ,
( CASE WHEN ( SELECT COUNT(1)
FROM @1
) > 0 THEN 0
ELSE 1
END ) a5
) b;
DELETE FROM @1;
SELECT CONVERT(VARCHAR(100), @date, 23) 日期 ,
Stype 渠道 ,
count1 签收单量 ,
count2 '0-8h入库单量' ,
count3 '8-24h入库单量' ,
count4 '24-48h入库单量' ,
count5 '48小时以后入库单量' ,
CONVERT (VARCHAR(10), percent1) + '%' '8小时内达成率' ,
CONVERT (VARCHAR(10), percent2) + '%' '24小时内达成率' ,
CONVERT (VARCHAR(10), percent3) + '%' '48小时内达成率' ,
CONVERT (VARCHAR(10), percent4) + '%' '48小时外占比'
FROM @result
UNION ALL
SELECT '' ,
'合计' ,
SUM(count1) ,
SUM(count2) ,
SUM(count3) ,
SUM(count4) ,
SUM(count5) ,
'' ,
'' ,
'' ,
''
FROM @result;

DATEDIFF 的用法的更多相关文章

  1. SQL Server DATEDIFF() 函数用法

    定义和用法 DATEDIFF() 函数返回两个日期之间的时间,例如计算年龄大小. DATEDIFF(datepart,startdate,enddate)startdate 和 enddate 参数是 ...

  2. SQL中CONVERT()函数用法详解

    SQL中CONVERT函数格式: CONVERT(data_type,expression[,style]) 参数说明: expression 是任何有效的 Microsoft® SQL Server ...

  3. sql server 的datediff函数

    这两天要把一个sqlserver数据库的程序改成oracle的,发现两个数据库之间的函数很多不一样.sqlserver的数据库中的DateDiff 函数用法解释如下: 描述 返回两个日期之间的时间间隔 ...

  4. 【T-SQL基础】01.单表查询-几道sql查询题

    概述: 本系列[T-SQL基础]主要是针对T-SQL基础的总结. [T-SQL基础]01.单表查询-几道sql查询题 [T-SQL基础]02.联接查询 [T-SQL基础]03.子查询 [T-SQL基础 ...

  5. VBScript常用函数

    VBScript常用函数 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 1.Abs函数 Option Explicit '@author :yinzhengjie 'blog:ht ...

  6. sql-datediff

    SQL中DateDiff的用法 DATEDIFF返回跨两个指定日期的日期和时间边界数. 语法DATEDIFF ( datepart , startdate , enddate ) 参数datepart ...

  7. Sql server中DateDiff用法【转】

    记录下来.每次使用都忘记.... DATEDIFF 函数 [日期和时间] 功能 返回两个日期之间的间隔. 语法 DATEDIFF ( date-part, date-expression-1, dat ...

  8. 详细的SQL中datediff用法

    DATEDIFF 函数 [日期和时间] 功能返回两个日期之间的间隔. 语法DATEDIFF ( date-part, date-expression-1, date-expression-2 ) da ...

  9. DATEDIFF interval=ms的用法

    datediff(ms,@CurrDateTime,@Date)>0 当上面的日期超过24天,用上面的sql会有问题 要修改成如下: (CONVERT(VARCHAR,@CurrDateTime ...

随机推荐

  1. 【转】10 个MySQL数据库备份教程推荐

    10 个MySQL数据库备份教程推荐 MySQL是动态网站开发中最著名的开源数据库系统.如果你在网站中使用了MySQL,那么你应该定期备份你的数据以防止它丢失. 本文将介绍自动或手动备份MySQL数据 ...

  2. sql server 2008获取表的字段注释

    SELECT 表名 then d.name else '' end, 表说明 then isnull(f.value,'') else '' end, 字段序号=a.colorder, 字段名=a.n ...

  3. Grafana---graph

    主面板简单的命名为Graph.它提供了一组非常丰富的图形选项. 单击面板的标题将显示一个菜单.edit选项为面板打开了额外的配置选项. 一.General general允许定制面板的外观和菜单选项. ...

  4. Martin Fowler’s Active Record design pattern.

    P of EAA: Active Record https://www.martinfowler.com/eaaCatalog/activeRecord.html Active Record An o ...

  5. JavaScript通过preventDefault()使input[type=text]禁止输入但保留光标

    一.说明 取消事件的默认动作. 该方法将通知 Web 浏览器不要执行与事件关联的默认动作(如果存在这样的动作).例如,如果 type 属性是 "submit",在事件传播的任意阶段 ...

  6. SQL判断字符类型是否为数字

    用ISNUMERIC函数 确定表达式是否为一个有效的数字类型. 语法 ISNUMERIC ( expression ) 参数 expression 要计算的表达式. 返回类型 int 注释 当输入表达 ...

  7. 怎样解决Please ensure that adb is correctly located at......

    昨天下午搭建了Android开发环境,但是天公不作美--执行新建的Android项目总是提演示样例如以下问题: [2014-10-30 15:41:47 - ] The connection to a ...

  8. 解决vsftp &quot;上传 553 Could not create file&quot;

    这个问题仅仅要:       1. setsebool -P ftpd_disable_trans 1       2. service vsftpd restart       太纠结了,呵呵

  9. android自定义控件(二)Canvas

    一.重要方法 1.translate 2.scale 3.rotate 二.注意 1.明确顺序 canvas.rotate(45); canvas.drawRect(new Rect(50, 50, ...

  10. sql server监控图解