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

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

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

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

Q&A

解決済

1回答

9104閲覧

【SQL Server】出力テーブルの列ヘッダー行を任意の値にASを使用せずすることはできますか?

sumAA

総合スコア14

SQL Server

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

0グッド

0クリップ

投稿2020/05/20 08:23

編集2020/05/20 08:44

SQL Server 2014を使用しています。
現在以下の店舗テーブル(仮)を横展開させて、列ヘッダー用の行を作成しようと考えております。

その際に、本来の列ヘッダー行を削除、ないし非表示にすることは可能でしょうか?詳細は以下です。

●店舗テーブル

店舗コード店舗名
1串カツ屋1号店
2串カツ屋2号店
3串カツ屋3号店

※テーブル作成用クエリ文

SQL

1CREATE TABLE tenpo ( 2 id INT NOT NULL PRIMARY KEY, 3 name VARCHAR(50) NOT NULL 4); 5 6 7INSERT INTO tenpo VALUES 8( 1, '串カツ屋1号店' ), 9( 2, '串カツ屋2号店' ), 10( 3, '串カツ屋3号店' ); 11 12

●最初の「tenpo」テーブルのように出力・・・①

SQL

1SELECT 2 id AS 店舗コード, 3 name AS 店舗名 4FROM 5 tenpo

↓↓
●①を無理やり横展開してみます・・・②

SQL

1SELECT 2 '営業日' 3 , max( CASE id WHEN 1 THEN name else '' END ) 4 , max( CASE id WHEN 2 THEN name else '' END ) 5 , max( CASE id WHEN 3 THEN name else '' END ) 6FROM 7 tenpo

↓↓
●②のクエリ文の結果、以下のような出力になります・・・③

(列名なし)(列名なし)(列名なし)(列名なし)
1営業日串カツ屋2号店串カツ屋2号店串カツ屋3号店

※行ヘッダ、列ヘッダは基本デフォルトで入ります。

③の出力結果には、今後複数テーブルを「UNION ALL」で集合させるつもりです。その際、③のテーブルの一行目(営業日から始まる行)を列ヘッダー行として利用したいと考えております。

しかし、
本来のデフォルトで入っている列ヘッダー行(列名なし)が列ヘッダーになってしまう状況を解消できません。検索した結果、以下がヒットしました。
https://docs.microsoft.com/ja-jp/previous-versions/sql/sql-server-2008/ms162773(v=sql.100)?redirectedfrom=MSDN

sqlcmdユーティリティを利用する方法
使用したことがないのではっきりしませんが、設定したログインユーザーでクエリ文を操作する際、すべての出力テーブルから列ヘッダーの表示をしないような方法のように認識しました。(間違っているかもしれません)

今実現したいのは、
特定のログインユーザーでクエリ文を操作する際、全てのテーブルから列ヘッダ行を表示しないのではなく、今出力するテーブルについて元々の列ヘッダー行を表示せず任意の行を列ヘッダーにしたいと考えてはいるのですが、果たして実現可能なのでしょうか。

※今回、SELECT文内でASを用いた方法は想定しておりません。

何かご存じの方がいらっしゃいましたら、ご教示いただけますと幸いです。
よろしくお願いします。

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

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

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

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

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

gentaro

2020/05/20 08:34

> 結果、以下がヒットしました。 質問文にそのURLを記載してください。
sumAA

2020/05/20 08:45

申し訳ありません。URLが抜けていました。 追加いたしました。 よろしくお願いします。
sazi

2020/05/20 09:24

> SELECT文内でASを用いた方法は想定しておりません。 との事なので、 > ③のテーブルの一行目(営業日から始まる行) をカラムとして持つテーブルを作りたいのですか?
sumAA

2020/05/20 10:09

> saziさん 申し訳ありません。 解決しました。 根本的に私の製品に対する理解が浅かったことが原因のようです。 別途、結果を記載させていただきます。
guest

回答1

0

自己解決

SQL Serverでクエリ文実行時に表示される表の「列名」「行番号」をできないか手法を探していました。
※画像でいう左端の「番号列」と最上部(列名なし)が記載されている「列タイトル行」

イメージ説明

数行程度のSELECT文などと同じ程度に、
何らかの命令文を単純に記載すれば消せる命令文があるかも、
と考えておりましたが実際方法はなさそうであるという結論に至りました。

特殊な方法として・・
sqlcmdユーティリティを使用することで列名箇所(列名なしの部分)は非表示にできるそうです。
https://docs.microsoft.com/ja-jp/previous-versions/sql/sql-server-2008/ms162773(v=sql.100)?redirectedfrom=MSDN」

ただし、ある特定のテーブルの出力時のみといった使用方法は想定されていません。境設定的に適用されてしまうため、テーブル出力時は列名箇所が非表示になってしまうものと思われます。

従って、
質問文を投稿において想定していた趣旨の実現としての解決方法はないという結論でこちらのスレッドをしめさせていただきたいと思います。

理解力不足でスレッドを汚してしまい申し訳ありませんでした。

投稿2020/05/20 10:30

sumAA

総合スコア14

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問