Просто запустите приведенные ниже сценарии на консоли:
sudo npm i -g n
sudo n stable
sudo npm update -g npm
Это будет работать только для Linux и MAC
У вас должна быть предварительно заполненная таблица (или функция, возвращающая набор результатов таблицы), к которой вы хотите присоединиться, которая содержит все 1-часовые интервалы, которые вы хотите получить в вашем результате.
Затем вы выполняете OUTER JOIN с этим, и вы должны получить их все.
Примерно так:
SELECT SLOT_HOUR, SUM(order_id)
FROM
ONEHOURSLOTS
LEFT JOIN ORDERS ON DATEPART(hh, order_date) = SLOT_HOUR
GROUP BY SLOT_HOUR
В некоторых из предыдущих ответов рекомендуется использовать таблицу часов и заполнять ее с помощью запроса UNION; это можно сделать лучше с помощью общего табличного выражения:
; WITH [Hours] ([Hour]) AS
(
SELECT TOP 24 ROW_NUMBER() OVER (ORDER BY [object_id]) AS [Hour]
FROM sys.objects
ORDER BY [object_id]
)
SELECT h.[Hour], o.[Sum]
FROM [Hours] h
LEFT OUTER JOIN (
SELECT datepart(hh, order_date) as [Hour], SUM(order_id) as [Sum]
FROM Orders
GROUP BY datepart(hh, order_date)
) o
ON h.[Hour] = o.[Hour]
Создайте таблицу часов, сохраняемую или даже синтезируемую «на лету»:
SELECT h.hour, s.sum
FROM (
SELECT 1 as hour
UNION ALL SELECT 2
UNION ALL SELECT 3
...
UNION ALL SELECT 24) as h
LEFT OUTER JOIN (
SELECT datepart(hh, order_date) as hour, SUM(order_id) as sum
FROM ORDERS
GROUP BY datepart(hh, order_date) ) as s
ON h.hour = s.hour;