de-vraag
  • 質問
  • タグ
  • ユーザー
通知:
報酬:
登録
登録すると、質問に対する返答やコメントが通知されます。
ログイン
すでにアカウントをお持ちの方は、ログインして新しい通知を確認してください。
追加された質問、回答、コメントには報酬があります。
さらに
ソース
編集
 Roger
Roger
質問

列の値に基づいて、単一の問合せから複数の行を戻す

私はこのテーブルを持っているとしましょう:

|Fld | Number|
 1     5
 2     2

そして、 Number フィールドと同じ数の Fld を検索するselectを作成したいとします。

|Fld |
 1
 1
 1
 1
 1
 2
 2

どうすればこれを達成できますか?一時的なテーブルを作成し、 Number に基づいてデータを作成することを考えていましたが、これを単一のSelect文で行うことができるのだろうかと思いました。

PS:私はSQLに新しい

1 2011-10-27T20:24:26+00:00 3
 Roger
Roger
編集された質問 25日 11月 2011 в 6:08
プログラミング
sql
oracle
Mark Byers
27日 10月 2011 в 8:26
2011-10-27T20:26:35+00:00
さらに
ソース
編集
#56792825

あなたは数値表に参加することができます:

SELECT Fld
FROM yourtable
JOIN Numbers
ON yourtable.Number <= Numbers.Number

数字表は数字のリストを持つ単なる表です:

 Number
 1
 2
 3
 etc...
3
0
Clockwork-Muse
27日 10月 2011 в 8:46
2011-10-27T20:46:39+00:00
さらに
ソース
編集
#56792826

あなたのRDBMSのバージョンがそれをサポートしているかどうかはわかりませんが(私はむしろそうは思われます)、ここでは再帰的なバージョンがあります:

WITH remaining (fld, times) as (SELECT fld, 1
                                FROM 
                                UNION ALL
                                SELECT a.fld, a.times + 1
                                FROM remaining as a
                                JOIN 
as b ON b.fld = a.fld AND b.number > a.times) SELECT fld FROM remaining ORDER BY fld

Given your source data table, it outputs this (count included for verification):

fld    times
=============
1      1 
1      2 
1      3 
1      4 
1      5 
2      1 
2      2                     
2
0
phil
28日 10月 2011 в 7:59
2011-10-28T07:59:36+00:00
さらに
ソース
編集
#56792827

素晴らしい解決策ではありません(あなたはまだテーブルを2回クエリしていますが、おそらくそれから作業することができます)

    SELECT t1.fld, t1.number
    FROM table t1, (
        SELECT ROWNUM number FROM dual 
        CONNECT BY LEVEL <= (SELECT MAX(number) FROM t1)) t2
    WHERE t2.number<=t1.number

必要な最大量の行を生成し、それを各行でフィルタリングします。

2
0
質問の追加
カテゴリ
すべて
技術情報
文化・レクリエーション
生活・芸術
科学
プロフェッショナル
事業内容
ユーザー
すべて
新しい
人気
1
Roxana Elizabeth CASTILLO Avalos
登録済み 1週間前
2
Hideo Nakagawa
登録済み 1週間前
3
Sergiy Tytarenko
登録済み 1週間前
4
shoxrux azadov
登録済み 1週間前
5
Koreets Koreytsev
登録済み 2週間前
© de-vraag :年
ソース
stackoverflow.com
ライセンス cc by-sa 3.0 帰属