電子書籍の厳選無料作品が豊富!

あるSQLを実行した結果
ある集計行(X1)が出るとします。

集計行(X1)
-------
12
15
23
24
28
31
45
47
-------

ここで、集計行の左の数字でグルーピングして、その中のもっとも小さい数字を
集計行の横に出すとします。(行数は変わりません)

集計行(X1),項目2
-------
12 ,12
15 ,12
23 ,23
24 ,23
28 ,23
31 ,31
45 ,45
47 ,45
-------

もとのSQLを
「select X1 from zz where 条件1」
とした場合、どのようにすればこの結果が得られるでしょう?

A 回答 (3件)

-- こういうことじゃないのかな?


select X1, min(X1) over (partition by substr(X1,1,1))
from zz where 条件
    • good
    • 0
この回答へのお礼

まさに求めたい通りの結果が出ました。

partition by ってたまに見る程度だったのですが、
こういう使い方をするのですね。
他の方々の解答でもできるかも知れませんが、
今回、この方法を採用するようにしました。
ありがとうございました。

お礼日時:2012/12/27 01:33

もしかして、X1の数の十の位の数で、グルーピングすればいいのかな??



select a.X1,b.minX1
from
(select X1,X1 - mod(X1,10) as GroupX1 from zz 条件1) a,
(select min(X1) as minX1,X1 - mod(X1,10) as GroupX1 from zz 条件1 group by X1 - mod(X1,10)) b
where
a.GroupX1=b.GroupX1
;
    • good
    • 0

項目2をひねり出す手段が明示されていないので、回答できる方は居ないと思いますよ。

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!