以前の投稿を検索しましたが、探している答えが見つかりません。24 時間 30 分間隔で取得したい
開始 = 00:30、01:00、01:30、02:00 など終了 - 24:00
できれば、私を正しい方向に向けてください。これは、Web Intelligence クエリ内でカスタム クエリ スクリプトを使用して実行できますか?
ありがとう
これを WebI でネイティブに行う方法はわかりませんが、フリーハンドの SQL クエリでブルート フォースを実行することはできます。私が使用しているデータベースは SQL Server です。SQL 構文は、データベース プラットフォームによって異なる場合があります。
最も簡単なアプローチは、多数の組合です...
SELECT '00:30' AS TimeInterval
UNION SELECT '01:00'
UNION SELECT '01:30'
UNION SELECT '02:00'
UNION SELECT '02:30'
UNION SELECT '03:00'
UNION SELECT '03:30'
UNION SELECT '04:00'
UNION SELECT '04:30'
UNION SELECT '05:00'
UNION SELECT '05:30'
UNION SELECT '06:00'
UNION SELECT '06:30'
UNION SELECT '07:00'
UNION SELECT '07:30'
UNION SELECT '08:00'
UNION SELECT '08:30'
UNION SELECT '09:00'
UNION SELECT '09:30'
UNION SELECT '10:00'
UNION SELECT '10:30'
UNION SELECT '11:00'
UNION SELECT '11:30'
UNION SELECT '12:00'
UNION SELECT '12:30'
UNION SELECT '13:00'
UNION SELECT '13:30'
UNION SELECT '14:00'
UNION SELECT '14:30'
UNION SELECT '15:00'
UNION SELECT '15:30'
UNION SELECT '16:00'
UNION SELECT '16:30'
UNION SELECT '17:00'
UNION SELECT '17:30'
UNION SELECT '18:00'
UNION SELECT '18:30'
UNION SELECT '19:00'
UNION SELECT '19:30'
UNION SELECT '20:00'
UNION SELECT '20:30'
UNION SELECT '21:00'
UNION SELECT '21:30'
UNION SELECT '22:00'
UNION SELECT '22:30'
UNION SELECT '23:00'
UNION SELECT '23:30'
UNION SELECT '24:00'
これは、CTEを使用したもう少しエレガントなアプローチです...
DECLARE @startnum INT = 1;
DECLARE @endnum INT = 48;
WITH cte AS
(
SELECT @startnum AS num
UNION ALL
SELECT num + 1 FROM cte WHERE num + 1 <= @endnum
)
SELECT CASE
WHEN num < 48 THEN
-- Here is the logical progression working from the inside out
-- 1. convert GETDATE() to a DATE to get rid of the time
-- 2. convert the result of #1 back to a DATETIME
-- 3. add the appropriate number of minutes
-- 4. convert to VARCHAR(5) style of 8 to get hh:mi
CONVERT(VARCHAR(5), DATEADD(MINUTE, num * 30, CONVERT(DATETIME, CONVERT(DATE, GETDATE()))), 8)
ELSE
'24:00'
END AS TimeInterval
FROM cte;
うまくいけば、あなたはそれらの1つをあなたのために働かせることができます.