
データが下記の様にあるとします。
テーブル名=tt
No dat
1 0123
2 0562
3 0444
5 9533
7 8520
9 1111
10 2555
12 7878
Noを4の倍数で区切って、datの2,3文字目の最大(d1)、最小(d2)、1レコード目(d3)、最終レコード(d4)を求めたいです。
出力データ
No dat nn d1 d2 d3 d4
1 0123
2 0562 → 0 56 12 12 44
3 0444
-------------
5 9533 → 1 53 52 53 52
7 8520
-------------
9 1111
10 2555 → 2 87 11 11 87
12 7878
下記の様にやると最大と最小は求めれましたが、最初と最後のデータの求め方がわかりません。
どなたか分かる方教えて下さい。
SELECT min(sec)as nn ,MAX(dd) as d1,Min(dd) as d2 FROM (
SELECT No/4 as sec,SUBSTRING(dat,2,2) as dd
FROM tt
) as s2 group by sec order by nn
No.1ベストアンサー
- 回答日時:
一時表を使った方がいいと思います。
こんなサブクエリでパフォーマンスが高いかどうかは分かりませんが。
IF OBJECT_ID('tempdb..#SEC_TEMP') IS NOT NULL
DROP TABLE #SEC_TEMP
SELECT
A.SEC
, ROW_NUMBER() OVER(PARTITION BY A.SEC ORDER BY A.SEC) AS SEC_CNT
, A.DD
INTO
#SEC_TEMP
FROM
( SELECT
FLOOR(NO / 4) AS SEC
, SUBSTRING(DAT, 2, 2) AS DD
FROM
TT
) A
SELECT
A.SEC AS NN
, MAX(A.DD) AS D1
, MIN(A.DD) AS D2
, (SELECT B.DD FROM #SEC_TEMP B WHERE B.SEC = A.SEC AND B.SEC_CNT = 1) AS D3
, (SELECT C.DD FROM #SEC_TEMP C WHERE C.SEC = A.SEC AND C.SEC_CNT = (SELECT MAX(D.SEC_CNT) FROM #SEC_TEMP D WHERE D.SEC = C.SEC)) AS D4
FROM
#SEC_TEMP A
GROUP BY
A.SEC
ORDER BY
A.SEC ASC
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
単一グループのグループ関数で...
-
where句中のtrim関数について
-
updateで複数行更新したい
-
【PL/SQL】FROM区に変数を使う方法
-
引数によってwhere句を切り替え...
-
AccessのSQL文で1件のみヒット...
-
データ
-
レコードの更新履歴について
-
osqleditについて
-
「数字で始まらない」ものを抽...
-
アクセスのレポートでレコード...
-
SELECT FOR UPDATE で該当レコ...
-
SQL*Loader Append
-
Oracleですがsqlで質問です。 ...
-
SQLで条件にヒットしたレコード...
-
値が入っていない日付型の項目...
-
列1と列2の関係性で列3の条...
-
一気に複数のレコードをinsert...
-
SQLローダーCSV取込で、囲み文...
-
Oracleで「文字が無効です」の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
単一グループのグループ関数で...
-
SELECT FOR UPDATE で該当レコ...
-
【PL/SQL】FROM区に変数を使う方法
-
where句中のtrim関数について
-
データ
-
SQL*Loader Append
-
AccessのSQL文で1件のみヒット...
-
引数によってwhere句を切り替え...
-
トランザクションログを出力せ...
-
updateで複数行更新したい
-
アクセスのレポートでレコード...
-
group byの並び順を変えるだけ...
-
「数字で始まらない」ものを抽...
-
osqleditについて
-
SQLで条件にヒットしたレコード...
-
デフォルトでデータが表示され...
-
BLOB型項目をSQLの検索条件に指...
-
1レコード全てを改行なしで表...
-
トリガからプロシージャのコー...
-
PL/SQLでフェッチでNULLの項目...
おすすめ情報