【发布时间】:2019-01-20 01:29:39
【问题描述】:
需要找到重叠时间 - START_DATUM 和 END_DATUM 是日期时间字段,其中包含停机时间的开始或结束日期和时间
在下面的示例中,只有内部停机时间(作为 internalDowntime 提到的字段)可以与其他停机时间(作为 OtherDowntime 提到的字段)重叠。最终目标是找到以分钟为单位的总重叠时间作为另一个字段
感谢有人能帮我解决这个问题
SELECT deck.ID_DECKUNGSBEITRAG,
(
SELECT TOP (1)
DATEDIFF(MINUTE, lr.START_DATUM, lr.END_DATUM) / 60.0
FROM dbo.LEITSTAND lr
INNER JOIN dbo.STILLSTANDSZEIT s
ON lr.ID_STILLSTANDSZEIT = s.ID_STILLSTANDSZEIT
INNER JOIN dbo.PRODUKTIONSANLAGE P
ON lr.ID_PRODUKTIONSANLAGE = P.ID_PRODUKTIONSANLAGE
WHERE lr.PRODUKTION_TYP = 'S'
AND s.TYP = 'R'
AND lr.ID_PRODUKTIONSANLAGE = l.ID_PRODUKTIONSANLAGE
AND lr.START_DATUM < l.START_DATUM
ORDER BY lr.START_DATUM DESC
) setuptime,
DATEDIFF(MINUTE, l.START_DATUM, l.END_DATUM) / 60.0 runtime,
(
SELECT SUM(DATEDIFF(MINUTE, le.START_DATUM, le.END_DATUM) / 60.0)
FROM dbo.STILLSTANDSZEIT s
INNER JOIN dbo.LEITSTAND le
ON le.ID_STILLSTANDSZEIT = s.ID_STILLSTANDSZEIT
WHERE s.ID_HERSTELLVORSCHRIFT = hs.ID_HERSTELLVORSCHRIFT
) internalDowntime,
(
SELECT SUM(DATEDIFF(MINUTE, ZEIT_VON, ZEIT_BIS) / 60.0)
FROM dbo.PRODUKTIONSANLAGE_AUSFALLZEIT
WHERE ZEIT_VON >= l.START_DATUM
AND ZEIT_VON <= l.END_DATUM
AND ID_PRODUKTIONSANLAGE = p.ID_PRODUKTIONSANLAGE
) OtherDowntime,
p.STUNDENSATZ_GRENZKOSTEN
FROM dbo.DECKUNGSBEITRAG deck
INNER JOIN dbo.HERSTELLVORSCHRIFT hs
ON deck.CHARGE = hs.CHARGE_NUMMER
INNER JOIN dbo.LEITSTAND l
ON l.ID_HERSTELLVORSCHRIFT = hs.ID_HERSTELLVORSCHRIFT
INNER JOIN dbo.PRODUKTIONSANLAGE p
ON p.ID_PRODUKTIONSANLAGE = l.ID_PRODUKTIONSANLAGE
WHERE deck.CHARGE = 'CHG0116112945'
AND deck.ID_MANDANT = 1
【问题讨论】:
-
对不起,这么晚的例子,但是你能像这样写你的问题吗:stackoverflow.com/questions/52432461/… 这个问题有样本数据和所需的输出。提前致谢。
标签: sql-server