質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
SQL Server

SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

Q&A

1回答

1750閲覧

複数のテーブルから同名のカラムを取り出し、そのカラムから指定した文字列の件数を抽出し、その総計数を知りたい。

ponchoccho

総合スコア17

SQL Server

SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

0グッド

0クリップ

投稿2018/11/14 11:05

A,B,Cという複数テーブルの各自から、Zという名のカラムがあるかを確認し、
ある場合には
Zカラムに指定した文字列の件数を抽出し、その総計を知りたいです。
※0かそうじゃないかだけを知りたいので、総計じゃなくても構いません。

B,CのテーブルにZカラムがない場合があり、
その場合には、そのテーブル以外での計算をしたいです。

例:Bがなければ、A+C CがなければA+B B,CがなければAのみ
AにはZカラムが必ずあります

1つのテーブルからカラム件数を抽出する処理(以前やっていたこと)

SQL

1declare @Zカラム VarChar(2); set @Zカラム = '01';  //左記は別の処理で取ってきています 2 3select count ( * ) as 件数 4 from 5 Aテーブル with (nolock) 6 where 7 Zカラム = @Zカラム;

試したこと

SQL

1IF EXISTS( 2SELECT * 3 FROM sys.columns 4 WHERE name = 'Zカラム' 5 AND object_id = Object_ID('[dbo].Aテーブル') 6) 7 select count ( * ) as 件数 8 from 9 Aテーブル with (nolock) 10 where 11 Zカラム = @Zカラム; 12else 13 SELECT null as 件数

これで、まずAテーブルにZカラムの有無を確認し、
ある場合に件数を抽出できるようになりました。
(elseをどうすればいいのか分かりませんでした…)

これを、複数のテーブルで行うことはできるでしょうか?
また、違ったやり方があるでしょうか?
教えていただければと思います。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sazi

2018/11/14 11:23

どういう事情でテーブルにカラムがあるか無いか不明な状態なのでしょう?
ponchoccho

2018/11/14 23:36

N店、M店、O店など、様々な店から同じプログラムでデータを抽出してきています。 店ごとにデータベースを作成しており、 テーブルにあるかないかを、把握しきれていないためです。 全部の店舗にBテーブル、Cテーブルともに「Z」というカラムを追加することはできない、というのもあります。 (店の都合上、私の権限の問題上)
guest

回答1

0

SQLで存在しないカラムにアクセスしようとすると当然エラーになります。
ですので、事前に存在確認をする必要があります。

システム情報スキーマのCOLUMNSで判断ができます。

以下の問い合わせで結果が返却されれば、カラムがあるという事になります。

SQL

1SELECT * FROM INFORMATION_SCHEMA.COLUMNS 2WHERE TABLE_SCHEMA=[スキーマ名] 3 AND TABLE_NAME=[テーブル名] 4 AND COLUMN_NAME=[カラム名]

投稿2018/11/15 00:26

sazi

総合スコア25138

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問