ここから本文です

select文で問合せ中のテーブル名を得る方法が知りたい たとえば、こういうテーブ...

アバター

ID非公開さん

2018/9/714:17:56

select文で問合せ中のテーブル名を得る方法が知りたい
たとえば、こういうテーブルがあったとして
[テーブル] aaa
-----------
col1|col2

-----------
1000|2000
-----------

なんらかのSQLを投げて
以下のそうな結果を得る方法はあるでしょうか

[テーブル] aaa
--------------------
col1|col2|tablename
--------------------
1000|2000|aaa
--------------------

SQL ServerのSELECT文で行いたいです。

イメージ的には
こんな感じで[tablename] 部分に テーブル名を出力してほしいです。
select col1,col2,tablename from aaa

これを最終的には複数のテーブルとunion して
select col1,col2,tablename from aaa unial all
select col1,col2,tablename from bbb unial all
select col1,col2,tablename from ccc

このように出力したいです。
--------------------
col1|col2|tablename
--------------------
1000|2000|aaa
3000|4000|bbb
5000|6000|ccc
--------------------

こうしてしまえば、一応望む結果にはなるのですが
select col1,col2,'aaa' from aaa unial all
select col1,col2,'bbb' from bbb unial all
select col1,col2,'ccc' from ccc

二か所にテーブル名や抽出条件を書きたくないので
いい方法があれば教えてください。

閲覧数:
43
回答数:
2

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

nob********さん

2018/9/714:54:34

select col1,col2,'aaa' as tablename from aaa unial all
select col1,col2,'bbb' as tablename from bbb unial all
select col1,col2,'ccc' as tablename from ccc
位しか方法は無いです。

アバター

質問した人からのコメント

2018/9/8 14:36:53

テーブル名を直接書く方法に落ち着きました。
ありがとうございます。

ベストアンサー以外の回答

1〜1件/1件中

プロフィール画像

カテゴリマスター

nor********さん

2018/9/804:27:48

つまらないことですが

select col1,col2,'aaa' as tablename from aaa union all
select col1,col2,'bbb' from bbb union all
select col1,col2,'ccc' from ccc

UNION ALLのスペルが違うのとUNION、UNION ALLの場合は先頭のSELECT文の項目名しか見ません。2つ目以降で指定しても無視されます。

> select文で問合せ中のテーブル名を得る方法が知りたい

とのことですが各SELECT文が結合(JOIN)で複数のテーブルを使用している、しかも各SELECT文で結合しているか、いないかは結果のデータ型が一致するなら、問題にならないことを考えると、どう考えても無理だとわかると思います。

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる