BinnyVishwant Ответов: 1

Нужно рассчитывать сменного задания, основанные на месяц и год (с обновляемого столбца requiredbytime )


у меня есть столбцы workordercurid,requiredbytime ,ODS_Start_date,instanceid

Мне нужно, сколько workordercurid обновил / изменил requiredbytime на основе ods_start_date и instanceid.
Здесь Workorderccurid является уникальным столбцом

select WorkorderCurID,count(RequiredByDtime) RequiredByDtime,CreateDtime  from (
select * from  DMSWEB.ODS_RECWorkOrderHeader (nolock))a
group by WorkorderCurID,CreateDtime
having count(RequiredByDtime)>1
order by CreateDtime


Что я уже пробовал:

select WorkorderCurID,count(RequiredByDtime) RequiredByDtime,CreateDtime  from (
select * from  DMSWEB.ODS_RECWorkOrderHeader (nolock))a
group by WorkorderCurID,CreateDtime
having count(RequiredByDtime)>1
order by CreateDtime

1 Ответов

Рейтинг:
2

David_Wimbley

Я не знаю, что такое ods_start_date, но следующий пример должен дать вам представление. Поскольку вы не опубликовали никаких данных схемы/образца, я использую таблицу var в sql server с некоторыми образцами данных, которые я создал. Мои колонки немного отличаются, но вы должны быть в состоянии увидеть общее направление, в котором это происходит.

DECLARE @WorkOrders TABLE (
	WorkOrderId INT NULL, --same as WorkorderCurID
	RequiredBy DATETIME NULL, --same as RequiredByDtime
	DateCreated DATETIME NULL -- same as CreateDtime
);

INSERT INTO @WorkOrders ( WorkOrderId, RequiredBy, DateCreated)
VALUES  ( 1 , -- WorkOrderId - int
          '2017-07-25 13:50:03.000', -- RequiredBy - datetime
          GETDATE()  -- DateCreated - datetime
        )
INSERT INTO @WorkOrders ( WorkOrderId ,RequiredBy ,DateCreated)
VALUES  ( 1 , -- WorkOrderId - int
          '2017-07-25 13:50:03.000', -- RequiredBy - datetime
          GETDATE()  -- DateCreated - datetime
        )
INSERT INTO @WorkOrders ( WorkOrderId ,RequiredBy ,DateCreated)
VALUES  ( 2 , -- WorkOrderId - int
          '2017-07-25 13:50:00.000', -- RequiredBy - datetime
          GETDATE()  -- DateCreated - datetime
        )
INSERT INTO @WorkOrders ( WorkOrderId ,RequiredBy ,DateCreated)
VALUES  ( 2 , -- WorkOrderId - int
          '2017-07-25 13:50:00.000', -- RequiredBy - datetime
          GETDATE()  -- DateCreated - datetime
        )
INSERT INTO @WorkOrders ( WorkOrderId ,RequiredBy ,DateCreated)
VALUES  ( 2 , -- WorkOrderId - int
          '2017-07-25 11:50:03.000', -- RequiredBy - datetime
          GETDATE()  -- DateCreated - datetime
        )

--Get counts by Date and Time
		SELECT WorkOrderId,RequiredBy, COUNT(*) AS WorkOrderCount FROM @WorkOrders
		GROUP BY WorkOrderId,RequiredBy

		--Get counts by date only
		SELECT WorkOrderId,CAST(RequiredBy AS DATE), COUNT(*) AS WorkOrderCount FROM @WorkOrders
		GROUP BY WorkOrderId,CAST(RequiredBy AS DATE)



Я не совсем понимаю, что такое ods_start_date, поэтому вам придется включить его в мой пример, если вы попытаетесь запустить его, но в противном случае это должно дать вам общую идею.

Я включил два запроса, один из которых получает подсчеты по дате и времени. В этом примере вы увидите, как рабочий заказ 2 имеет две строки, так как для этого рабочего заказа существует 2 разных уникальных времени.

Во-вторых, если бы вы подсчитывали заказы на работу только по требуемой дате (дате). Таким образом, вы увидите, что он разбит на 2 записи, а подсчеты корректируются по дате вместо даты + времени для рабочего заказа 2.

Не стесняйтесь задавать любые вопросы.