22,207
社区成员
发帖
与我相关
我的任务
分享
SELECT SORDER,TO_NUMBER(SUM(DATEDIFF(MINUTE,JSTSTM,JSTETM)*1.0/60),2) SUMTM
FROM TB
WHERE WAREHUSFG=1 AND KOTECD BETWEEN 2015 AND 2026
GROUP BY SORDER
TRY
/*------------------------------------------------------------------
-- Author : htl258(Tony)
-- Date : 2010-04-12 12:08:01
-- Version: Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (Intel X86)
Jul 9 2008 14:43:34
Copyright (c) 1988-2008 Microsoft Corporation
Developer Edition on Windows NT 5.1 <X86> (Build 2600: Service Pack 3)
------------------------------------------------------------------*/
--> 生成测试数据表:tb
IF OBJECT_ID('[tb]') IS NOT NULL
DROP TABLE [tb]
GO
CREATE TABLE [tb]([SORDER] NVARCHAR(10),[KOTECD] INT,[JSTSTM] DATETIME,[JSTETM] DATETIME,[WAREHUSFG] INT)
INSERT [tb]
SELECT '04113510',2025,N'2010-04-03 11:12:00',N'2010-04-03 11:12:00',1 UNION ALL
SELECT '04113510',2026,N'2010-04-03 11:36:00',N'2010-04-03 11:36:00',1 UNION ALL
SELECT '04113511',2015,N'2010-04-03 02:10:00',N'2010-04-03 02:10:00',1 UNION ALL
SELECT '04113511',2025,N'2010-04-03 08:38:00',N'2010-04-03 08:38:00',1 UNION ALL
SELECT '04113511',2026,N'2010-04-03 08:45:00',N'2010-04-03 08:45:00',1 UNION ALL
SELECT '04113540',2015,N'2010-04-02 22:50:00',N'2010-04-02 22:51:00',1 UNION ALL
SELECT '04113540',2025,N'2010-04-03 20:06:00',N'2010-04-03 20:06:00',1 UNION ALL
SELECT '04113540',2026,N'2010-04-03 20:33:00',N'2010-04-03 20:33:00',1 UNION ALL
SELECT '04113550',2015,N'2010-04-02 22:49:00',N'2010-04-03 01:59:00',1 UNION ALL
SELECT '04113550',2025,N'2010-04-03 22:11:00',N'2010-04-03 22:11:00',1 UNION ALL
SELECT '04113550',2026,N'2010-04-03 22:21:00',N'2010-04-03 22:21:00',1 UNION ALL
SELECT '04113560',2015,N'2010-04-03 01:59:00',N'2010-04-03 03:01:00',1 UNION ALL
SELECT '04113560',2025,N'2010-04-04 01:02:00',N'2010-04-04 01:03:00',1 UNION ALL
SELECT '04113560',2026,N'2010-04-04 01:08:00',N'2010-04-04 01:09:00',1 UNION ALL
SELECT '04113630',2015,N'2010-04-03 09:43:00',N'2010-04-03 09:44:00',1 UNION ALL
SELECT '04113630',2025,N'2010-04-03 15:13:00',N'2010-04-03 15:13:00',1 UNION ALL
SELECT '04113630',2026,N'2010-04-03 15:33:00',N'2010-04-03 15:33:00',1 UNION ALL
SELECT '04113640',2015,N'2010-04-03 10:48:00',N'2010-04-03 10:48:00',1 UNION ALL
SELECT '04113640',2025,N'2010-04-03 17:35:00',N'2010-04-03 17:35:00',1 UNION ALL
SELECT '04113640',2026,N'2010-04-03 17:58:00',N'2010-04-03 17:58:00',1 UNION ALL
SELECT '04113650',2015,N'2010-04-03 10:48:00',N'2010-04-03 11:52:00',1 UNION ALL
SELECT '04113650',2025,N'2010-04-03 21:38:00',N'2010-04-03 21:38:00',1 UNION ALL
SELECT '04113650',2026,N'2010-04-03 21:44:00',N'2010-04-03 21:44:00',1 UNION ALL
SELECT '04113660',2015,N'2010-04-03 11:52:00',N'2010-04-03 12:47:00',1 UNION ALL
SELECT '04113660',2025,N'2010-04-03 18:16:00',N'2010-04-03 18:16:00',1 UNION ALL
SELECT '04113660',2026,N'2010-04-03 18:25:00',N'2010-04-03 18:26:00',1 UNION ALL
SELECT '04113670',2015,N'2010-04-03 12:48:00',N'2010-04-03 13:55:00',1 UNION ALL
SELECT '04113670',2025,N'2010-04-03 21:48:00',N'2010-04-03 21:48:00',1 UNION ALL
SELECT '04113670',2026,N'2010-04-03 21:49:00',N'2010-04-03 21:49:00',1 UNION ALL
SELECT '04113680',2015,N'2010-04-03 14:23:00',N'2010-04-03 14:23:00',1 UNION ALL
SELECT '04113680',2025,N'2010-04-04 00:44:00',N'2010-04-04 00:46:00',1
GO
--SELECT * FROM [tb]
-->SQL查询如下:
SELECT SORDER,SUM(DATEDIFF(HH,JSTSTM,JSTETM)) SUMTM
FROM TB
WHERE WAREHUSFG=1 AND KOTECD BETWEEN 2015 AND 2026
GROUP BY SORDER
/*
SORDER SUMTM
---------- -----------
04113510 0
04113511 0
04113540 0
04113550 3
04113560 2
04113630 0
04113640 0
04113650 1
04113660 1
04113670 1
04113680 0
(11 行受影响)
*/
--还是要这个结果
SELECT SORDER,CAST(SUM(DATEDIFF(MI,JSTSTM,JSTETM)*1./60) AS DEC(18,2)) SUMTM
FROM TB
WHERE WAREHUSFG=1 AND KOTECD BETWEEN 2015 AND 2026
GROUP BY SORDER
/*
SORDER SUMTM
---------- ---------------------------------------
04113510 0.00
04113511 0.00
04113540 0.02
04113550 3.17
04113560 1.07
04113630 0.02
04113640 0.00
04113650 1.07
04113660 0.93
04113670 1.12
04113680 0.03
(11 行受影响)
*/
SELECT SORDER,SUM(DATEDIFF(HH,JSTSTM,JSTETM)) SUMTM
FROM TB
WHERE WAREHUSFG=1 AND KOTECD BETWEEN 2015 AND 2026
GROUP BY SORDER
select datediff(hour,(select JSTSTM from t where KOTECD=2015),(select JSTETMfrom t where KOTECD=2026))
-- oracle
create table tb (SORDER CHAR(8),KOTECD INT,JSTSTM DATE,JSTETM DATE,WAREHUSFG INT);
insert into tb values('04113510',2025,timestamp '2010-04-03 11:12:00',timestamp '2010-04-03 11:12:00',1);
insert into tb values('04113510',2026,timestamp '2010-04-03 11:36:00',timestamp '2010-04-03 11:36:00',1);
insert into tb values('04113511',2015,timestamp '2010-04-03 02:10:00',timestamp '2010-04-03 02:10:00',1);
insert into tb values('04113511',2025,timestamp '2010-04-03 08:38:00',timestamp '2010-04-03 08:38:00',1);
insert into tb values('04113511',2026,timestamp '2010-04-03 08:45:00',timestamp '2010-04-03 08:45:00',1);
insert into tb values('04113540',2015,timestamp '2010-04-02 22:50:00',timestamp '2010-04-02 22:51:00',1);
insert into tb values('04113540',2025,timestamp '2010-04-03 20:06:00',timestamp '2010-04-03 20:06:00',1);
insert into tb values('04113540',2026,timestamp '2010-04-03 20:33:00',timestamp '2010-04-03 20:33:00',1);
insert into tb values('04113550',2015,timestamp '2010-04-02 22:49:00',timestamp '2010-04-03 01:59:00',1);
insert into tb values('04113550',2025,timestamp '2010-04-03 22:11:00',timestamp '2010-04-03 22:11:00',1);
insert into tb values('04113550',2026,timestamp '2010-04-03 22:21:00',timestamp '2010-04-03 22:21:00',1);
insert into tb values('04113560',2015,timestamp '2010-04-03 01:59:00',timestamp '2010-04-03 03:01:00',1);
insert into tb values('04113560',2025,timestamp '2010-04-04 01:02:00',timestamp '2010-04-04 01:03:00',1);
insert into tb values('04113560',2026,timestamp '2010-04-04 01:08:00',timestamp '2010-04-04 01:09:00',1);
insert into tb values('04113630',2015,timestamp '2010-04-03 09:43:00',timestamp '2010-04-03 09:44:00',1);
insert into tb values('04113630',2025,timestamp '2010-04-03 15:13:00',timestamp '2010-04-03 15:13:00',1);
insert into tb values('04113630',2026,timestamp '2010-04-03 15:33:00',timestamp '2010-04-03 15:33:00',1);
insert into tb values('04113640',2015,timestamp '2010-04-03 10:48:00',timestamp '2010-04-03 10:48:00',1);
insert into tb values('04113640',2025,timestamp '2010-04-03 17:35:00',timestamp '2010-04-03 17:35:00',1);
insert into tb values('04113640',2026,timestamp '2010-04-03 17:58:00',timestamp '2010-04-03 17:58:00',1);
insert into tb values('04113650',2015,timestamp '2010-04-03 10:48:00',timestamp '2010-04-03 11:52:00',1);
insert into tb values('04113650',2025,timestamp '2010-04-03 21:38:00',timestamp '2010-04-03 21:38:00',1);
insert into tb values('04113650',2026,timestamp '2010-04-03 21:44:00',timestamp '2010-04-03 21:44:00',1);
insert into tb values('04113660',2015,timestamp '2010-04-03 11:52:00',timestamp '2010-04-03 12:47:00',1);
insert into tb values('04113660',2025,timestamp '2010-04-03 18:16:00',timestamp '2010-04-03 18:16:00',1);
insert into tb values('04113660',2026,timestamp '2010-04-03 18:25:00',timestamp '2010-04-03 18:26:00',1);
insert into tb values('04113670',2015,timestamp '2010-04-03 12:48:00',timestamp '2010-04-03 13:55:00',1);
insert into tb values('04113670',2025,timestamp '2010-04-03 21:48:00',timestamp '2010-04-03 21:48:00',1);
insert into tb values('04113670',2026,timestamp '2010-04-03 21:49:00',timestamp '2010-04-03 21:49:00',1);
insert into tb values('04113680',2015,timestamp '2010-04-03 14:23:00',timestamp '2010-04-03 14:23:00',1);
insert into tb values('04113680',2025,timestamp '2010-04-04 00:44:00',timestamp '2010-04-04 00:46:00',1);
select * from tb;
-- 不计算工序间的间隔时间
select sorder, to_char(sum(jstetm-jststm)*24,'990.99') sumtm
from tb
where warehusfg=1 and kotecd between 2015 and 2026
group by sorder;
--计算工序间的间隔时间
select sorder, to_char((max(jstetm)-min(jststm))*24,'990.99') sumtm
from tb
where warehusfg=1 and kotecd between 2015 and 2026
group by sorder;
drop table tb;
IF OBJECT_ID('[tb]') IS NOT NULL
DROP TABLE [tb]
GO
CREATE TABLE [tb]([SORDER] NVARCHAR(10),[KOTECD] INT,[JSTSTM] DATETIME,[JSTETM] DATETIME,[WAREHUSFG] INT)
INSERT [tb]
SELECT '04113510',2025,N'2010-04-03 11:12:00',N'2010-04-03 11:12:00',1 UNION ALL
SELECT '04113510',2026,N'2010-04-03 11:36:00',N'2010-04-03 11:36:00',1 UNION ALL
SELECT '04113511',2015,N'2010-04-03 02:10:00',N'2010-04-03 02:10:00',1 UNION ALL
SELECT '04113511',2025,N'2010-04-03 08:38:00',N'2010-04-03 08:38:00',1 UNION ALL
SELECT '04113511',2026,N'2010-04-03 08:45:00',N'2010-04-03 08:45:00',1 UNION ALL
SELECT '04113540',2015,N'2010-04-02 22:50:00',N'2010-04-02 22:51:00',1 UNION ALL
SELECT '04113540',2025,N'2010-04-03 20:06:00',N'2010-04-03 20:06:00',1 UNION ALL
SELECT '04113540',2026,N'2010-04-03 20:33:00',N'2010-04-03 20:33:00',1 UNION ALL
SELECT '04113550',2015,N'2010-04-02 22:49:00',N'2010-04-03 01:59:00',1 UNION ALL
SELECT '04113550',2025,N'2010-04-03 22:11:00',N'2010-04-03 22:11:00',1 UNION ALL
SELECT '04113550',2026,N'2010-04-03 22:21:00',N'2010-04-03 22:21:00',1 UNION ALL
SELECT '04113560',2015,N'2010-04-03 01:59:00',N'2010-04-03 03:01:00',1 UNION ALL
SELECT '04113560',2025,N'2010-04-04 01:02:00',N'2010-04-04 01:03:00',1 UNION ALL
SELECT '04113560',2026,N'2010-04-04 01:08:00',N'2010-04-04 01:09:00',1 UNION ALL
SELECT '04113630',2015,N'2010-04-03 09:43:00',N'2010-04-03 09:44:00',1 UNION ALL
SELECT '04113630',2025,N'2010-04-03 15:13:00',N'2010-04-03 15:13:00',1 UNION ALL
SELECT '04113630',2026,N'2010-04-03 15:33:00',N'2010-04-03 15:33:00',1 UNION ALL
SELECT '04113640',2015,N'2010-04-03 10:48:00',N'2010-04-03 10:48:00',1 UNION ALL
SELECT '04113640',2025,N'2010-04-03 17:35:00',N'2010-04-03 17:35:00',1 UNION ALL
SELECT '04113640',2026,N'2010-04-03 17:58:00',N'2010-04-03 17:58:00',1 UNION ALL
SELECT '04113650',2015,N'2010-04-03 10:48:00',N'2010-04-03 11:52:00',1 UNION ALL
SELECT '04113650',2025,N'2010-04-03 21:38:00',N'2010-04-03 21:38:00',1 UNION ALL
SELECT '04113650',2026,N'2010-04-03 21:44:00',N'2010-04-03 21:44:00',1 UNION ALL
SELECT '04113660',2015,N'2010-04-03 11:52:00',N'2010-04-03 12:47:00',1 UNION ALL
SELECT '04113660',2025,N'2010-04-03 18:16:00',N'2010-04-03 18:16:00',1 UNION ALL
SELECT '04113660',2026,N'2010-04-03 18:25:00',N'2010-04-03 18:26:00',1 UNION ALL
SELECT '04113670',2015,N'2010-04-03 12:48:00',N'2010-04-03 13:55:00',1 UNION ALL
SELECT '04113670',2025,N'2010-04-03 21:48:00',N'2010-04-03 21:48:00',1 UNION ALL
SELECT '04113670',2026,N'2010-04-03 21:49:00',N'2010-04-03 21:49:00',1 UNION ALL
SELECT '04113680',2015,N'2010-04-03 14:23:00',N'2010-04-03 14:23:00',1 UNION ALL
SELECT '04113680',2025,N'2010-04-04 00:44:00',N'2010-04-04 00:46:00',1
GO
select T1.SORDER,datediff(hour,T1.[JSTSTM],T2.JSTETM) 'Time' from
(
select SORDER,[JSTSTM] from [tb] where KOTECD=2015
) T1
join
(
select SORDER,JSTETM from [tb] where [KOTECD]=2026
)
T2
on T1.SORDER=T2.SORDER
SORDER Time
---------- -----------
04113511 6
04113540 22
04113550 24
04113560 24
04113630 6
04113640 7
04113650 11
04113660 7
04113670 9
(9 行受影响)