首先,我沒有創建這個資料庫。我正在查詢的表不會將條目分成年月時尚。它只是將條目轉儲到其中,并且每個條目都有一個時間戳。
我正在嘗試為不同行程收集資料,這些行程已登錄到此資料庫表中以用于 Excel 電子表格,然后用于演示目的。
這是我目前用來獲取 2022 年頭 3 個月的查詢。
(SELECT
COUNT(id) AS Process_1
FROM QueueItems
WHERE CreationTime >= CONVERT(datetime, '2022-01-01')
AND CreationTime < CONVERT(datetime, '2022-02-01')
AND QueueId = 3)
UNION
(SELECT
COUNT(id) AS Process_1
FROM QueueItems
WHERE CreationTime >= CONVERT(datetime, '2022-02-01')
AND CreationTime < CONVERT(datetime, '2022-03-01')
AND QueueId = 3)
UNION
(SELECT
COUNT(id) AS Process_1
FROM QueueItems
WHERE CreationTime >= CONVERT(datetime, '2022-03-01')
AND CreationTime < CONVERT(datetime, '2022-04-01')
AND QueueId = 3)
我的問題是我需要回傳的查詢在每次一月->二月->三月->等時以相同的順序顯示資訊。
如果我今天查詢這個,三月將是第一行,因為顯然三月還沒有運行任何行程,我相信默認排序是升序。但我不能簡單地在查詢末尾包含“ORDER BY month”,因為資料庫不存盤每個條目發生在哪個月份......
SQL 絕對不是我最擅長的語言,所以如果這是一個不好的問題,我提前道歉,我只是想盡快處理這個被推送給我的任務。
uj5u.com熱心網友回復:
嘗試UNION ALL代替UNION. 這將阻止他們UNION嘗試按照它認為應該的方式對資料進行排序。然后,您可以將每個查詢放在您希望它在結果中的位置。首先是 IE 一月,然后是二月,等等……
例如...
(SELECT
COUNT(id) AS Process_1
FROM QueueItems
WHERE CreationTime >= CONVERT(datetime, '2022-01-01')
AND CreationTime < CONVERT(datetime, '2022-02-01')
AND QueueId = 3)
UNION ALL
(SELECT
COUNT(id) AS Process_1
FROM QueueItems
WHERE CreationTime >= CONVERT(datetime, '2022-02-01')
AND CreationTime < CONVERT(datetime, '2022-03-01')
AND QueueId = 3)
UNION ALL
(SELECT
COUNT(id) AS Process_1
FROM QueueItems
WHERE CreationTime >= CONVERT(datetime, '2022-03-01')
AND CreationTime < CONVERT(datetime, '2022-04-01')
AND QueueId = 3)
同樣,您可以像這樣簡化查詢...
SELECT
DATEPART(month,CreationTime) AS [Month],
COUNT(id) AS Process_1
FROM QueueItems
WHERE CreationTime >= '2022-01-01'
AND CreationTime < '2023-01-01'
AND QueueId = 3
GROUP BY DATEPART(month,CreationTime)
ORDER BY [Month]
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/435486.html
下一篇:使用like%時搜索范圍
