Quantcast
Channel: SQL.ru: Microsoft SQL Server
Viewing all articles
Browse latest Browse all 7251

помогите написать запрос

$
0
0
Доброго времени суток.
Есть таблица с показаниями счетчика машины на:
(06-30 16-00) 1 смена
(16-30 23-59) 2 смена
(00-01 06-30) 3 смена


CREATE TABLE [dbo].[TotalCounters_Test1](
	[Id] [int] IDENTITY(1,1) NOT NULL,
	[OnlyDate] [date] NULL ,
	[OnlyTime] [time](7) NULL ,
	[Sorter] [int] NULL)



+
INSERT INTO TotalCounters_Test1 VALUES ( convert(DateTime,'20160810',112),Convert( VarChar( 10 ), '23:59:00.0000000', 114 ), 1543) ;
INSERT INTO TotalCounters_Test1 VALUES ( convert(DateTime,'20160810',112),Convert( VarChar( 10 ), '00:01:00.0000000', 114 ), 1543) ;
INSERT INTO TotalCounters_Test1 VALUES ( convert(DateTime,'20160810',112),Convert( VarChar( 10 ), '06:30:00.0000000', 114 ), 1678) ;
INSERT INTO TotalCounters_Test1 VALUES ( convert(DateTime,'20160810',112),Convert( VarChar( 10 ), '06:31:00.0000000', 114 ), 1678) ;
INSERT INTO TotalCounters_Test1 VALUES ( convert(DateTime,'20160810',112),Convert( VarChar( 10 ), '16:00:00.0000000', 114 ), 1800) ;
INSERT INTO TotalCounters_Test1 VALUES ( convert(DateTime,'20160810',112),Convert( VarChar( 10 ), '16:01:00.0000000', 114 ), 1800) ;
INSERT INTO TotalCounters_Test1 VALUES ( convert(DateTime,'20160811',112),Convert( VarChar( 10 ), '23:59:00.0000000', 114 ), 1967) ;
INSERT INTO TotalCounters_Test1 VALUES ( convert(DateTime,'20160811',112),Convert( VarChar( 10 ), '00:01:00.0000000', 114 ), 1967) ;
INSERT INTO TotalCounters_Test1 VALUES ( convert(DateTime,'20160811',112),Convert( VarChar( 10 ), '06:30:00.0000000', 114 ), 1567) ;
INSERT INTO TotalCounters_Test1 VALUES ( convert(DateTime,'20160811',112),Convert( VarChar( 10 ), '06:31:00.0000000', 114 ), 1567) ;
INSERT INTO TotalCounters_Test1 VALUES ( convert(DateTime,'20160811',112),Convert( VarChar( 10 ), '16:00:00.0000000', 114 ), 1624) ;
INSERT INTO TotalCounters_Test1 VALUES ( convert(DateTime,'20160811',112),Convert( VarChar( 10 ), '16:01:00.0000000', 114 ), 1624) ;
INSERT INTO TotalCounters_Test1 VALUES ( convert(DateTime,'20160812',112),Convert( VarChar( 10 ), '23:59:00.0000000', 114 ), 1789) ;
INSERT INTO TotalCounters_Test1 VALUES ( convert(DateTime,'20160812',112),Convert( VarChar( 10 ), '00:01:00.0000000', 114 ), 1789) ;
INSERT INTO TotalCounters_Test1 VALUES ( convert(DateTime,'20160812',112),Convert( VarChar( 10 ), '06:30:00.0000000', 114 ), 1900) ;
INSERT INTO TotalCounters_Test1 VALUES ( convert(DateTime,'20160812',112),Convert( VarChar( 10 ), '06:31:00.0000000', 114 ), 1900) ;
INSERT INTO TotalCounters_Test1 VALUES ( convert(DateTime,'20160812',112),Convert( VarChar( 10 ), '16:00:00.0000000', 114 ), 2078) ;
INSERT INTO TotalCounters_Test1 VALUES ( convert(DateTime,'20160812',112),Convert( VarChar( 10 ), '16:01:00.0000000', 114 ), 2078) ;
INSERT INTO TotalCounters_Test1 VALUES ( convert(DateTime,'20160813',112),Convert( VarChar( 10 ), '23:59:00.0000000', 114 ), 2300) ;
INSERT INTO TotalCounters_Test1 VALUES ( convert(DateTime,'20160813',112),Convert( VarChar( 10 ), '00:01:00.0000000', 114 ), 2300) ;
INSERT INTO TotalCounters_Test1 VALUES ( convert(DateTime,'20160813',112),Convert( VarChar( 10 ), '06:30:00.0000000', 114 ), 2456) ;
INSERT INTO TotalCounters_Test1 VALUES ( convert(DateTime,'20160813',112),Convert( VarChar( 10 ), '06:31:00.0000000', 114 ), 2456) ;
INSERT INTO TotalCounters_Test1 VALUES ( convert(DateTime,'20160813',112),Convert( VarChar( 10 ), '16:00:00.0000000', 114 ), 2567) ;
INSERT INTO TotalCounters_Test1 VALUES ( convert(DateTime,'20160813',112),Convert( VarChar( 10 ), '16:01:00.0000000', 114 ), 2567) ;
INSERT INTO TotalCounters_Test1 VALUES ( convert(DateTime,'20160814',112),Convert( VarChar( 10 ), '23:59:00.0000000', 114 ), 2677) ;
INSERT INTO TotalCounters_Test1 VALUES ( convert(DateTime,'20160814',112),Convert( VarChar( 10 ), '00:01:00.0000000', 114 ), 2677) ;
INSERT INTO TotalCounters_Test1 VALUES ( convert(DateTime,'20160814',112),Convert( VarChar( 10 ), '06:30:00.0000000', 114 ), 2832) ;
INSERT INTO TotalCounters_Test1 VALUES ( convert(DateTime,'20160814',112),Convert( VarChar( 10 ), '06:31:00.0000000', 114 ), 2832) ;
INSERT INTO TotalCounters_Test1 VALUES ( convert(DateTime,'20160814',112),Convert( VarChar( 10 ), '16:00:00.0000000', 114 ), 2993) ;
INSERT INTO TotalCounters_Test1 VALUES ( convert(DateTime,'20160814',112),Convert( VarChar( 10 ), '16:01:00.0000000', 114 ), 2993) ;
INSERT INTO TotalCounters_Test1 VALUES ( convert(DateTime,'20160815',112),Convert( VarChar( 10 ), '23:59:00.0000000', 114 ), 3190) ;
INSERT INTO TotalCounters_Test1 VALUES ( convert(DateTime,'20160815',112),Convert( VarChar( 10 ), '00:01:00.0000000', 114 ), 3190) ;
INSERT INTO TotalCounters_Test1 VALUES ( convert(DateTime,'20160815',112),Convert( VarChar( 10 ), '06:30:00.0000000', 114 ), 3342) ;
INSERT INTO TotalCounters_Test1 VALUES ( convert(DateTime,'20160815',112),Convert( VarChar( 10 ), '06:31:00.0000000', 114 ), 3342) ;
INSERT INTO TotalCounters_Test1 VALUES ( convert(DateTime,'20160815',112),Convert( VarChar( 10 ), '16:00:00.0000000', 114 ), 3523) ;
INSERT INTO TotalCounters_Test1 VALUES ( convert(DateTime,'20160815',112),Convert( VarChar( 10 ), '16:01:00.0000000', 114 ), 3523) ;
INSERT INTO TotalCounters_Test1 VALUES ( convert(DateTime,'20160816',112),Convert( VarChar( 10 ), '23:59:00.0000000', 114 ), 3700) ;
INSERT INTO TotalCounters_Test1 VALUES ( convert(DateTime,'20160816',112),Convert( VarChar( 10 ), '00:01:00.0000000', 114 ), 3700) ;
INSERT INTO TotalCounters_Test1 VALUES ( convert(DateTime,'20160816',112),Convert( VarChar( 10 ), '06:30:00.0000000', 114 ), 3802) ;
INSERT INTO TotalCounters_Test1 VALUES ( convert(DateTime,'20160816',112),Convert( VarChar( 10 ), '06:31:00.0000000', 114 ), 3802) ;
INSERT INTO TotalCounters_Test1 VALUES ( convert(DateTime,'20160816',112),Convert( VarChar( 10 ), '16:00:00.0000000', 114 ), 3983) ;
INSERT INTO TotalCounters_Test1 VALUES ( convert(DateTime,'20160816',112),Convert( VarChar( 10 ), '16:01:00.0000000', 114 ), 3983) ;



пытаюсь написать запрос но не очень получается:

SELECT TOP 7 *
FROM        (SELECT        OnlyDate, MAX(Sorter) - MIN(Sorter) AS I_smena
            FROM dbo.TotalCounters_Test1  WHERE  (OnlyTime BETWEEN '06:30:00' AND '16:00:00')
			GROUP BY OnlyDate) T1

left join  (SELECT        OnlyDate, MAX(Sorter) - MIN(Sorter) AS II_smena
            FROM dbo.TotalCounters_Test1 WHERE (OnlyTime BETWEEN '16:00:00' AND '23:59:59')
			GROUP BY OnlyDate) T2 on T2.OnlyDate=T1.OnlyDate

 left join (SELECT        OnlyDate, MAX(Sorter) - MIN(Sorter) AS III_smena
            FROM dbo.TotalCounters_Test1  WHERE (OnlyTime BETWEEN '00:00:01' AND '06:30:00')
			GROUP BY OnlyDate) T3	on T3.OnlyDate=T1.OnlyDate
 order by T1.OnlyDate desc


/*
 left join	(SELECT OnlyDate, T1.Sorter_I + T2.Sorter_II + T3.Sorter_III AS Day_Total 
            FROM dbo.TotalCounters_Test1 AS p 
			  ) T4  on T4.OnlyDate=T3.OnlyDate
*/


нужно получить таблицу:

OnlyDate !! I_smena !! II_smena !! III_smena !! Total (I+II+III)

ps. III_smena это данные за следующие сутки . рабочие сутки начинаются с 06.30 утра и заканчиваются в 06.30 следующего дня

заранее благодарю за помощь.

Viewing all articles
Browse latest Browse all 7251

Trending Articles