Хорошо, так что это может быть сложно объяснить.Как получить количество временных меток за первый час каждой смены?
То, что я пытаюсь сделать, - подсчитать количество загрузок в течение первого часа каждой смены. Я хочу сказать, что если загрузка начнется в 06:30, я хочу рассчитать количество загрузок с 06:30 до 07:00. Если загрузка началась с 0705, счет будет от 0705 до 0800 и т. Д.
Вот что Я должен работать с до сих пор:
SELECT est.shift_date
,CASE est.shift_ident
WHEN '1' THEN 'D'
WHEN '2'THEN 'N'
END AS shift_ident
,min(est.start_timestamp) AS start
FROM equip_status_trans est
JOIN equip_status_code esc ON esc.status_code est.status_code
WHERE est.shift_date >= (getdate() - 180)
AND esc.status_desc 'LU Loading'
AND est.equip_ident IN (
'S803'
,'S804'
)
GROUP BY est.shift_date
,est.shift_ident
,est.equip_ident
Игнорирование фильтров, что это заставляет меня это дата, тождественное сдвиг, и начать метку времени загрузки для каждой смены.
У меня также есть
SELECT est.shift_date
,CASE est.shift_ident
WHEN '1' THEN 'D'
WHEN '2' THEN 'N'
END AS shift_ident
,count(est.end_timestamp) AS count
,min(est.start_timestamp) AS start
FROM equip_status_trans est
JOIN equip_status_code esc ON esc.status_code = est.status_code
WHERE est.shift_date >= (getdate() - 180)
AND esc.status_desc = 'LU Loading'
AND est.equip_ident IN (
'S803'
,'S804'
)
GROUP BY est.shift_date
,est.shift_ident
,est.equip_ident
,datepart(hh, est.end_timestamp)
, который дает мне дату, идентичность сдвига, начать метку времени загрузки, и количество нагрузки в течение каждого часа. Начальные временные метки - это минимальные отметки времени загрузки для каждого часа, а не минимальная отметка времени для каждой смены.
Проблема, с которой я сталкиваюсь, заключается в том, что каждый раз, когда я пытаюсь присоединиться к двум, он возвращает количество загрузок за каждый час во время смены, а не только в первый час.
Как кто-то очень новый для SQL Server, что это самый простой способ сделать это?
Высокой оценки
Вот что присоединиться заявление выглядит как
SELECT est.shift_date,
CASE est.shift_ident
WHEN '1' THEN 'D'
WHEN '2' THEN 'N'
END as shift_ident,
min(est.start_timestamp) as start
, est.equip_ident, d1.count
FROM equip_status_trans est
join equip_status_code esc on esc.status_code = est.status_code
left outer join
(SELECT est2.shift_date,
CASE est2.shift_ident
WHEN '1' THEN 'D' WHEN '2' THEN 'N'
END as shift_ident
, count(est2.end_timestamp) as count
, min(est2.start_timestamp) as start
, est2.equip_ident
FROM equip_status_trans est2
join equip_status_code esc2 on esc2.status_code = est2.status_code
WHERE est2.shift_date >= (getdate() - 180)
and esc2.status_desc = 'LU Loading'
and est2.equip_ident IN('S803', 'S804')
GROUP BY est2.shift_date
, est2.shift_ident
, est2.equip_ident
, datepart(hh, est2.end_timestamp)
)d1 on est.start_timestamp = d1.start
WHERE est.shift_date >= (getdate() - 180)
and esc.status_desc = 'LU Loading'
and est.equip_ident IN('S803', 'S804')
GROUP BY est.shift_date, est.shift_ident, est.equip_ident, d1.count
Какой код соединения выглядит? –
Просто добавили его на вопрос – james