C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.94945 の関連記事表示

<< 0 >>
■94945  Re[1]: SQLServer でのデータの取り方を教えてください。
□投稿者/ KOZ -(2020/06/05(Fri) 10:04:31)
    No94935 (ファイター さん) に返信
    > 同一Nameの開始時間(Stime)が最終時間の時の Code です。
    
    Name が同一で重複する STime が無いとしたとき、こういう場合のアプローチとしては
    
    (1) Name が同一で STime に大きいものが無いレコードを抜き出す
    
    SELECT
        Name
    ,   Code
    ,   STime
    ,   ETime
    ,   (
            SELECT
                SUM(T2.MINUTES)
            FROM
                Table_1 T2
            WHERE
                T2.Name =   T1.Name
        )
    FROM
        Table_1 T1
    WHERE
        NOT EXISTS (
            SELECT
                *
            FROM
                Table_1 T3
            WHERE
                T3.Name     =   T1.Name
            AND T3.STime    >   T1.STime
        )
    
    (2) Name でグルーピング
    
    SELECT
        Name
    ,   (
            SELECT
                Code
            FROM
                Table_1             T2
            WHERE
                T2.Name                 =   T1.Name
            AND T2.STime                =   MAX(T1.STime)
        )                   Code
    ,   MAX(T1.STime)       STime
    ,   MAX(T1.ETime)       ETime
    ,   SUM(T1.MINUTES)     MINUTES
    FROM
        Table_1 T1
    GROUP BY
        Name
    
    
    が考えられます。
    
    STime が重複する場合、(1) のパターンは使えないのでストアドでぶん回すとか
    (2) のパターンで Min(Code) か Max(Code) とすればよいかと。
    
    
    
記事No.94935 のレス /過去ログ164より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -