SQLなら俺に訊け [無断転載禁止]©2ch.net (457レス)
SQLなら俺に訊け [無断転載禁止]©2ch.net http://mevius.5ch.net/test/read.cgi/tech/1499985653/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
リロード規制
です。10分ほどで解除するので、
他のブラウザ
へ避難してください。
140: デフォルトの名無しさん [sage] 2021/10/24(日) 00:25:59.14 ID:4lHZz/Ub SQLだけでやってみた WITH ブレークチェック AS ( SELECT CASE WHEN LAG(status,1,NULL) OVER (ORDER BY [time]) < status THEN 0 ELSE 1 END AS st, [time] FROM 元のテーブル), 開始終了 AS ( SELECT [time], (SELECT MIN([time]) FROM ブレークチェック WHERE st = 1 AND [time] > t.[time]) AS end_time FROM ブレークチェック t WHERE st = 1), t1 AS (SELECT [time] FROM 元のテーブル WHERE [status] = 1), t2 AS (SELECT [time] FROM 元のテーブル WHERE [status] = 2), t3 AS (SELECT [time] FROM 元のテーブル WHERE [status] = 3), t4 AS (SELECT [time] FROM 元のテーブル WHERE [status] = 4) SELECT ROW_NUMBER() OVER (ORDER BY 開始終了.[time]) AS rep_id, t1.[time] AS status_1, t2.[time] AS status_2, t3.[time] AS status_3, t4.[time] AS status_4 FROM 開始終了 LEFT JOIN t1 ON t1.[time] >= 開始終了.[time] AND (t1.[time] < 開始終了.[end_time] OR 開始終了.end_time IS NULL) LEFT JOIN t2 ON t2.[time] >= 開始終了.[time] AND (t2.[time] < 開始終了.[end_time] OR 開始終了.end_time IS NULL) LEFT JOIN t3 ON t3.[time] >= 開始終了.[time] AND (t3.[time] < 開始終了.[end_time] OR 開始終了.end_time IS NULL) LEFT JOIN t4 ON t4.[time] >= 開始終了.[time] AND (t4.[time] < 開始終了.[end_time] OR 開始終了.end_time IS NULL) 素直にループ回すほうがいいな http://mevius.5ch.net/test/read.cgi/tech/1499985653/140
141: デフォルトの名無しさん [sage] 2021/10/24(日) 07:39:02.37 ID:djVQHxKk >>140 ありがとうございます。SQLだけでも書けるんですね 足りないstatusを補完できないかとか集計キーを作ってからとか当初の目的と外れたところで発狂してました http://mevius.5ch.net/test/read.cgi/tech/1499985653/141
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.023s