0

以前の投稿を検索しましたが、探している答えが見つかりません。24 時間 30 分間隔で取得したい

開始 = 00:30、01:00、01:30、02:00 など終了 - 24:00

できれば、私を正しい方向に向けてください。これは、Web Intelligence クエリ内でカスタム クエリ スクリプトを使用して実行できますか?

ありがとう

4

1 に答える 1

0

これを 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つをあなたのために働かせることができます.

于 2019-12-10T16:52:10.057 に答える