USER_TAB_COLUMNSから入力したテーブル名で構造を抽出し
SQL文を作成出来るものを作ろうとしています。
80%までうまく行くのですが、SELECT文でフィールドをカンマ付けで置いていく
所で最後のフィールドに来た時カンマが付加されてしまいます。
これを最後のフィールドに来た時カンマが付加されないでスペースで置くように
したいのですが。。
set pagesize 0
set linesize 1000
set trimspool on
set feedback off
set verify off
ACCEPT TABLE CHAR PROMPT 'TABLE NAME:'
set termout off
spool C:\TEST_csv.sql
SELECT 'SELECT ' FROM DUAL;
SELECT COLUMN_NAME || ','
FROM USER_TAB_COLUMNS
WHERE TABLE_NAME = UPPER( '&TABLE' )
ORDER BY COLUMN_ID;
SELECT 'FROM DUAL' FROM DUAL;
SPOOL OFF
No.1ベストアンサー
- 回答日時:
2番目のクエリにCOLUMN_IDのMAXを取るサブクエリを作成し、
USER_TAB_COLUMNSと外部結合。
USER_TAB_COLUMNSのCOLUMN_IDがMAXでなかったら,を付加、
COLUMN_IDのMAXだったらスペースになるようにクエリを作ればいいのではないでしょうか。
試していませんがこんなかんじ↓
SELECT COLUMN_NAME || NVL2(ID,' ' ',' )
FROM USER_TAB_COLUMNS,
(
SELECT MAX(COLUMN_ID) ID
FROM USER_TAB_COLUMNS
) MAX_ID
WHERE TABLE_NAME = UPPER( '&TABLE' )
AND USER_TAB_COLUMNS.COLUMN_ID += MAX_ID.COLUMN_ID
ORDER BY COLUMN_ID;
この回答への補足
ヒントいただきありがとうございます。
最大のカラムIDになったらスペースをセットする
という事は考えたのですが、うまくいきませんでした。
実行すると最後のカラム名だけがセットされます。
ご教授頂きました、SQL文はエラーがあり
(まあテストしていないからですね)
下記のように直しましたが、うまくいきません。
Dual文を抜きます。↓
SELECT COLUMN_NAME || NVL2(ID,' ',',' )
FROM USER_TAB_COLUMNS,
(
SELECT MAX(COLUMN_ID) ID
FROM USER_TAB_COLUMNS
WHERE TABLE_NAME = UPPER('&TABLE' )
) MAX_ID
WHERE
TABLE_NAME = UPPER('&TABLE')
AND USER_TAB_COLUMNS.COLUMN_ID (+) = MAX_ID.ID
ORDER BY COLUMN_ID;
No.3
- 回答日時:
なんか自分で解決する気ありますか?
ここまでくればGoogleで一発でしょ。
夏休みの宿題を手伝っている気がします。
外部結合の意味は調べたのですか?
参考URL:http://www.mitene.or.jp/~rnk/TIPS_ORCL_TBLLINK1. …
まぁー夏休みの宿題みたいなもんですね。
(おーテキビシー)(+_+)
結局、アドバイス頂いたSQLは、MAX列の項目した取れませんでしたので、(外部結合は理解しているつもりなのですが・・私の実力では無理でした)
それを生かして前半部を以前のままと後半部分をそのSQLでくっつけました。
もっと簡単なSQL文があるかもしれませんが、まー出来ればいいかということでこれでよしとします。
アドバイスありがとうございました。m(_ _)m
No.2
- 回答日時:
No.1です。
外部結合がうまくいっていないようですね。
> AND USER_TAB_COLUMNS.COLUMN_ID (+) = MAX_ID.ID
の辺りを直してください。たぶんこんなかんじ↓
AND USER_TAB_COLUMNS.COLUMN_ID = (+) MAX_ID.ID
この回答への補足
>
AND USER_TAB_COLUMNS.COLUMN_ID = (+) MAX_ID.ID
これじゃー文法エラーですよ。
AND USER_TAB_COLUMNS.COLUMN_ID = MAX_ID.ID
これもダメですし、うまくいきませんね。
よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- Oracle sqlで質問です。 aテーブルとbテーブルがあり、下記のsqlで取得したidとnameに一致しないレ 1 2022/04/20 20:34
- MySQL 共通点はあります。何が違うのでしょうか? 1 2023/01/27 05:22
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- MySQL 書籍の内容はまともでしょうか? 1 2023/01/22 03:07
- MySQL php テーブルを作れない 2 2022/11/17 18:22
- PHP php テーブルが作成できない 1 2022/11/17 23:41
- Oracle SQL update方法 2 2022/06/22 14:07
- Access(アクセス) アクセス 有効なフィールド名、または式として認識できませんのエラー 3 2022/08/19 11:53
- Oracle SQLについて教えて下さい。 主キーを持ったカラムを主キーの機能を持たせたまま カンマ区切りで文字列 1 2023/03/27 22:47
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・ハマっている「お菓子」を教えて!
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Accessでグループ化した結果フ...
-
Access2000 2番目に大きい数値...
-
access で「指定したフィール...
-
テーブルに主キーを作らないデ...
-
Accessで現金出納簿を作りたい...
-
Access コマンドボタンクリッ...
-
ACCESSでクエリを作成したら「...
-
Accessフォームのテキストボッ...
-
Accessを使って日付を比較したい
-
ACCESSでテーブルから選択,表示...
-
ADOでRecordsetオブジェクトを...
-
ACCESS クエリで重複データを最...
-
マイクロソフトAccessでsqlのas...
-
Accessのフォーム画面について
-
Accessの入力フォームから、テ...
-
アクセスにエクセルのデータを...
-
MS Access2000のフォームについて
-
ACCESSのフォームからデータの...
-
帳票フォームに全レコードを表...
-
SQLです教えてくださいお願いし...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Accessのクエリで、Left関数を...
-
Accessでグループ化した結果フ...
-
NULL値を含む場合のフィルタ
-
Accessでフォームへのフィール...
-
access で「指定したフィール...
-
Access2000 2番目に大きい数値...
-
アクセスで前年対比を出す方法...
-
【access】テキストから日付へ...
-
別のテーブルのフィールドを抽...
-
【至急】Mp3tagで歌手情報を追...
-
ファイルメーカーで住所内の市...
-
[Access]クエリの抽出条件について
-
アクセスのフィールドデータを...
-
VBAで日付型とテキストでフィル...
-
ACCESSのフィールドに記述する...
-
宛名作成(Word)の郵便番号が...
-
ファイルメーカーのチェックボ...
-
[Microsoft Access]クエリ作成...
-
アクセスクエリで以前あった演...
-
ファイルメーカー あいうえお...
おすすめ情報