Mssql 比较好的写法


DECLARE @date DATETIME= '2016-11-01';
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, ReceivedTime, DomesticWarehouseInTime) AS subdate
FROM dbo.TWX_TransportFromMst WITH ( NOLOCK ) WHERE Country = '中国香港' AND TooWeight = 0 AND DomesticWarehouseInTime > '2010-01-01' AND 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<=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 )
JOIN dbo.TWX_TransportOrder b ON a.TransportOrderCode = b.TransportOrderCode
WHERE b.Country = '中国台湾' AND b.CarrierType='ZHIYUN' AND DomesticWarehouseInTime > '2010-01-01' 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<=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 )
JOIN dbo.TWX_TransportOrder b ON a.TransportOrderCode = b.TransportOrderCode
WHERE b.Country = '中国台湾' AND b.CarrierType<>'ZHIYUN' AND DomesticWarehouseInTime > '2010-01-01' 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<=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 DomesticWarehouseInTime > '2010-01-01' 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<=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 DomesticWarehouseInTime > '2010-01-01' 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<=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 DomesticWarehouseInTime > '2010-01-01' 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<=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 )
JOIN dbo.TWX_TransportOrder b ON a.TransportOrderCode = b.TransportOrderCode
WHERE b.Country = '马来西亚' AND b.Province IN ('纳闵','沙捞越','沙巴') AND DomesticWarehouseInTime > '2010-01-01' 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<=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 )
JOIN dbo.TWX_TransportOrder b ON a.TransportOrderCode = b.TransportOrderCode
WHERE b.Country = '马来西亚' AND b.Province NOT IN ('纳闵','沙捞越','沙巴') AND DomesticWarehouseInTime > '2010-01-01' 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<=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 DomesticWarehouseInTime > '2010-01-01' 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<=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 )
JOIN dbo.TWX_TransportOrder b ON a.TransportOrderCode = b.TransportOrderCode
WHERE b.Country = '新加坡' AND b.InterDeliveryID=103 AND DomesticWarehouseInTime > '2010-01-01' 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<=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 )
JOIN dbo.TWX_TransportOrder b ON a.TransportOrderCode = b.TransportOrderCode
WHERE b.Country = '马来西亚' AND b.InterDeliveryID=103 AND DomesticWarehouseInTime > '2010-01-01' 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<=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 )
JOIN dbo.TWX_TransportOrder b ON a.TransportOrderCode = b.TransportOrderCode
WHERE b.Country = '新加坡' AND a.TooWeight=0 AND b.InterDeliveryID=104 AND DomesticWarehouseInTime > '2010-01-01' 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<=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 )
JOIN dbo.TWX_TransportOrder b ON a.TransportOrderCode = b.TransportOrderCode
WHERE b.Country = '新加坡' AND a.TooWeight=1 AND b.InterDeliveryID=104 AND DomesticWarehouseInTime > '2010-01-01' 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<=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 )
JOIN dbo.TWX_TransportOrder b ON a.TransportOrderCode = b.TransportOrderCode
WHERE b.Country = '马来西亚' AND a.TooWeight=0 AND b.InterDeliveryID=104 AND DomesticWarehouseInTime > '2010-01-01' 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<=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 )
JOIN dbo.TWX_TransportOrder b ON a.TransportOrderCode = b.TransportOrderCode
WHERE b.Country = '马来西亚' AND a.TooWeight=1 AND b.InterDeliveryID=104 AND DomesticWarehouseInTime > '2010-01-01' 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<=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 stype 渠道,count1 签收单量,count2 '0-8h入库单量',count3 '8-24h入库单量', count4 '24-48h入库单量',count5 '48小时以后入库单量',
percent1 '8小时内达成率',percent2 '24小时内达成率',percent3 '48小时内达成率',percent4 '48小时外占比' FROM @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 (1) a,
(2) a1,
(3) a2,
(4) a3,
(5) a4,
(6) a5
) b

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 1 a,
2 a1,
3 a2,
4 a3,
5 a4,
6 a5
) b

posted on 2017-11-16 10:10  chengjunde  阅读(194)  评论(0编辑  收藏  举报

导航