日付に基づいてテーブルの行をフィルタリングする

アラウン

私は次のデータセットを持っています:

ここに画像の説明を入力してください

これは、各施設のタスクのサイクルを指定し、「cycleperiod」列はサイクルの開始日と終了日を指定します。

タスクは、開始日と完了ステータスを指定する個々の列で指定されます(date〜status)、

ステータスの「0」は未完了を意味し、「1」は完了を意味します。

次に、施設ごとに次のように行をフィルタリングします。

  1. 現在のサイクル

  2. 少なくとも1つのタスクが不完全な前の1つのサイクル

  3. 次のサイクルが現在の日付の3日以内に開始する場合は、次の1サイクル

これまでのところ、各施設の現在のサイクルを取得するためにこれを実行しましたが、のロジックを理解できません

   select *  from ##finalTempTable1 
   where Cast(LTRIM(RTRIM(SUBSTRING(CyclePeriod, 0, 11))) as date) >=   cast(getdate() as date)
   and cast(LTRIM(RTRIM(SUBSTRING(CyclePeriod, CHARINDEX(''o'',CyclePeriod,0) + 2, 11))) as date) <= cast(getdate() as date); 

この点での助けは大歓迎です。

user359135

私はあなたが何をしようとしているのか100%確信していませんが、私があなたを正しく理解しているなら、ここにスターターがあります:

select 
    cycleperiod
from 
    ##finalTempTable1 
where 
    Cast(LTRIM(RTRIM(SUBSTRING(CyclePeriod, 0, 11))) as date) >=   cast(getdate() as date)
    and cast(LTRIM(RTRIM(SUBSTRING(CyclePeriod, CHARINDEX(''o'',CyclePeriod,0) + 2, 11))) as date) <= cast(getdate() as date)
    and right(cycleperiod) = '0'
UNION

select 
    max(b.cycleperiod)
from 
    ##finalTempTable1 as a 
    inner join (
        select 
            b.CyclePeriod
        from
            ##finalTempTable1 as b
        WHERE 
            and right(cycleperiod) = '0'
    )as b
        ON Cast(LTRIM(RTRIM(SUBSTRING(b.CyclePeriod, 0, 11))) as date) < Cast(LTRIM(RTRIM(SUBSTRING(b.CyclePeriod, 0, 11))) as date) 
where 
    Cast(LTRIM(RTRIM(SUBSTRING(CyclePeriod, 0, 11))) as date) >=   cast(getdate() as date)
    and cast(LTRIM(RTRIM(SUBSTRING(CyclePeriod, CHARINDEX(''o'',CyclePeriod,0) + 2, 11))) as date) <= cast(getdate() as date)

UNION

select 
    min(b.cycleperiod)  
from 
    ##finalTempTable1 as a 
    inner join (
        select 
            b.CyclePeriod
        from
            ##finalTempTable1 as b
        WHERE 
            and right(cycleperiod) = '0'
    )as b
        ON Cast(LTRIM(RTRIM(SUBSTRING(b.CyclePeriod, 0, 11))) as date) > Cast(LTRIM(RTRIM(SUBSTRING(b.CyclePeriod, 0, 11))) as date) 
where 
    Cast(LTRIM(RTRIM(SUBSTRING(CyclePeriod, 0, 11))) as date) >=   cast(getdate() as date)
    and cast(LTRIM(RTRIM(SUBSTRING(CyclePeriod, CHARINDEX(''o'',CyclePeriod,0) + 2, 11))) as date) <= cast(getdate() as date)
    and Cast(LTRIM(RTRIM(SUBSTRING(b.CyclePeriod, 0, 11))) as date) <= <= dateadd(d,3,getdate() )

基本的に、必要な3つのデータセットを結合します。

次と前のサイクル期間を取得するには、テーブルをそれ自体に結合します

結果を1つだけ取得し、最大と最小を表示どおりに使用できるようにすると、重複するピリオドはなく、日付はアルファベット順の並べ替えが機能するようにフォーマットされます。

サイクル期間の列以外のものが必要な場合は、別の一時テーブルを使用するか、次のようにして、この結果をテーブルに再度結合します。

select 
    d.*
from 
    ##finalTempTable1  as d
    inner join(
    select 
        cycleperiod
    from 
        ##finalTempTable1 
    where 
        Cast(LTRIM(RTRIM(SUBSTRING(CyclePeriod, 0, 11))) as date) >=   cast(getdate() as date)
        and cast(LTRIM(RTRIM(SUBSTRING(CyclePeriod, CHARINDEX(''o'',CyclePeriod,0) + 2, 11))) as date) <= cast(getdate() as date)
        and right(cycleperiod) = '0'
    UNION

    select 
        max(b.cycleperiod)
    from 
        ##finalTempTable1 as a 
        inner join (
            select 
                b.CyclePeriod
            from
                ##finalTempTable1 as b
            WHERE 
                and right(cycleperiod) = '0'
        )as b
            ON Cast(LTRIM(RTRIM(SUBSTRING(b.CyclePeriod, 0, 11))) as date) < Cast(LTRIM(RTRIM(SUBSTRING(b.CyclePeriod, 0, 11))) as date) 
    where 
        Cast(LTRIM(RTRIM(SUBSTRING(CyclePeriod, 0, 11))) as date) >=   cast(getdate() as date)
        and cast(LTRIM(RTRIM(SUBSTRING(CyclePeriod, CHARINDEX(''o'',CyclePeriod,0) + 2, 11))) as date) <= cast(getdate() as date)

    UNION

    select 
        min(b.cycleperiod)  
    from 
        ##finalTempTable1 as a 
        inner join (
            select 
                b.CyclePeriod
            from
                ##finalTempTable1 as b
            WHERE 
                and right(cycleperiod) = '0'
        )as b
            ON Cast(LTRIM(RTRIM(SUBSTRING(b.CyclePeriod, 0, 11))) as date) > Cast(LTRIM(RTRIM(SUBSTRING(b.CyclePeriod, 0, 11))) as date) 
    where 
        Cast(LTRIM(RTRIM(SUBSTRING(CyclePeriod, 0, 11))) as date) >=   cast(getdate() as date)
        and cast(LTRIM(RTRIM(SUBSTRING(CyclePeriod, CHARINDEX(''o'',CyclePeriod,0) + 2, 11))) as date) <= cast(getdate() as date)
        and Cast(LTRIM(RTRIM(SUBSTRING(b.CyclePeriod, 0, 11))) as date) <= <= dateadd(d,3,getdate() )
    ) as c
        on d.cycleperiod = c.CyclePeriod

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

リストへの付属に基づいてテーブルをフィルタリングする方法

分類Dev

列の一致条件に基づいてPostgreSQLテーブルの行をフィルタリングする

分類Dev

別のテーブルに基づいてテーブルをフィルタリングする

分類Dev

.locを使用して日付フィールドに基づいてフィルタリングする方法

分類Dev

jqueryを使用してdatepickerを介して選択された日付範囲に基づいてテーブルをフィルタリングする

分類Dev

日付に基づいてMongoDBのレコードをフィルタリング/検索する方法

分類Dev

日付キーの値に基づいて辞書をフィルタリングする

分類Dev

角度4の日付に基づいてレコードをフィルタリングする方法

分類Dev

テーブルの行に割り当てられたクラスに基づいてHTMLテーブルをフィルタリングするjQueryボタン

分類Dev

Excel / PowerQuery-別のテーブルに表示されている行に基づいてテーブルをフィルタリングする

分類Dev

日付列に基づいてデータフレームをフィルタリングするパンダ

分類Dev

値のタプルに基づいてPostgresテーブルをフィルタリングする

分類Dev

パワークエリで別のテーブルの値に基づいてテーブルの行をフィルタリングする方法

分類Dev

日付に基づいて材料テーブルをフィルタリングする方法はありますか

分類Dev

日付グループの最新の日付に基づいてデータをフィルタリングする方法は?

分類Dev

JavaScript計算出力に基づいてテーブル行をフィルタリングする

分類Dev

特定のセルの名前属性に基づいてテーブルをフィルタリングする

分類Dev

IDと日付範囲に基づいてデータフレームをフィルタリングする

分類Dev

列の条件に基づいてデータテーブルをフィルタリングする

分類Dev

テーブルの詳細名とテキストに基づいてテーブルの行をフィルタリングする

分類Dev

セルの値/形式に基づいてテーブルをフィルタリングする

分類Dev

さまざまな日付要件に基づいて行をフィルタリングする

分類Dev

子テーブルの列に基づいてLINQクエリをフィルタリングする方法は?

分類Dev

ファイル内の日付に基づいて行をフィルタリングするようにperlスクリプトを最適化する

分類Dev

コンボボックスの値に基づいてテーブルをフィルタリングする

分類Dev

特定の列の値に基づいてピボットテーブルをフィルタリングする

分類Dev

Rの行間の日付の違いに基づいて行をフィルタリングするにはどうすればよいですか?

分類Dev

日付に基づいてデータをフィルタリングする方法は?

分類Dev

日付範囲に基づいてフィルタリングされたデータを削除する

Related 関連記事

  1. 1

    リストへの付属に基づいてテーブルをフィルタリングする方法

  2. 2

    列の一致条件に基づいてPostgreSQLテーブルの行をフィルタリングする

  3. 3

    別のテーブルに基づいてテーブルをフィルタリングする

  4. 4

    .locを使用して日付フィールドに基づいてフィルタリングする方法

  5. 5

    jqueryを使用してdatepickerを介して選択された日付範囲に基づいてテーブルをフィルタリングする

  6. 6

    日付に基づいてMongoDBのレコードをフィルタリング/検索する方法

  7. 7

    日付キーの値に基づいて辞書をフィルタリングする

  8. 8

    角度4の日付に基づいてレコードをフィルタリングする方法

  9. 9

    テーブルの行に割り当てられたクラスに基づいてHTMLテーブルをフィルタリングするjQueryボタン

  10. 10

    Excel / PowerQuery-別のテーブルに表示されている行に基づいてテーブルをフィルタリングする

  11. 11

    日付列に基づいてデータフレームをフィルタリングするパンダ

  12. 12

    値のタプルに基づいてPostgresテーブルをフィルタリングする

  13. 13

    パワークエリで別のテーブルの値に基づいてテーブルの行をフィルタリングする方法

  14. 14

    日付に基づいて材料テーブルをフィルタリングする方法はありますか

  15. 15

    日付グループの最新の日付に基づいてデータをフィルタリングする方法は?

  16. 16

    JavaScript計算出力に基づいてテーブル行をフィルタリングする

  17. 17

    特定のセルの名前属性に基づいてテーブルをフィルタリングする

  18. 18

    IDと日付範囲に基づいてデータフレームをフィルタリングする

  19. 19

    列の条件に基づいてデータテーブルをフィルタリングする

  20. 20

    テーブルの詳細名とテキストに基づいてテーブルの行をフィルタリングする

  21. 21

    セルの値/形式に基づいてテーブルをフィルタリングする

  22. 22

    さまざまな日付要件に基づいて行をフィルタリングする

  23. 23

    子テーブルの列に基づいてLINQクエリをフィルタリングする方法は?

  24. 24

    ファイル内の日付に基づいて行をフィルタリングするようにperlスクリプトを最適化する

  25. 25

    コンボボックスの値に基づいてテーブルをフィルタリングする

  26. 26

    特定の列の値に基づいてピボットテーブルをフィルタリングする

  27. 27

    Rの行間の日付の違いに基づいて行をフィルタリングするにはどうすればよいですか?

  28. 28

    日付に基づいてデータをフィルタリングする方法は?

  29. 29

    日付範囲に基づいてフィルタリングされたデータを削除する

ホットタグ

アーカイブ