C# と VB.NET の質問掲示板
ASP.NET、C++/CLI、Java 何でもどうぞ
C# と VB.NET の入門サイト
Re[3]: 列名のデータで取得する方法
(過去ログ 155 を表示中)
掲示板トップ
C# と VB.NET 入門
新規作成
利用方法/規約
トピック表示
ランキング
記事検索
過去ログ
[トピック内 4 記事 (1 - 4 表示)] <<
0
>>
■90229
/ inTopicNo.1)
列名のデータで取得する方法
▼
■
□投稿者/ ルパン
(26回)-(2019/02/18(Mon) 16:22:38)
分類:[.NET 全般]
SQLServer で以下のように2つのテーブルがあるとき
NAME TANA NO
AA A N1
BB A N2
CC B N1
NAME N1 N2 N3
A 1 3 4
B 4 5 6
AA は TANA[A] の RETU[3] 番目
BB は TANA[A] の RETU[3] 番目
CC は TANA[B] の RETU[4] 番目
として以下のように取得することはできますか?
(列名がデータに入っていた場合にその列名のデータを取得できますか?)
NAME TANA RETU
AA A 1
BB A 3
CC B 4
引用返信
編集キー/
編集
■90232
/ inTopicNo.2)
Re[1]: 列名のデータで取得する方法
▲
▼
■
□投稿者/ バーバル
(1回)-(2019/02/18(Mon) 17:23:25)
以下のいずれかの方法はどうでしょうか。
(1)ストアドプロシージャを使って必要データをSELECTできるようにする。
(2)2番目のテーブルの[N1],[N2]...列のデータをすべて取得して、SQL呼び出し側言語で対象列のデータを判別する。
(2)の方が楽だと思いますが、どうでしょう。
引用返信
編集キー/
編集
■90234
/ inTopicNo.3)
Re[2]: 列名のデータで取得する方法
▲
▼
■
□投稿者/ kaina
(46回)-(2019/02/18(Mon) 17:54:17)
そもそも2つ目のテーブルでRUTEを横展開で持つ必要はありますか?
以下のように縦展開に変更することが可能であれば、
楽になりますが、如何でしょうか?
NAME NO RUTE
A N1 1
A N2 3
A N3 4
B N1 4
B N2 5
B N3 6
この構成にした場合、以下のようにシンプルなSQLにすることが出来ます。
SELECT A.NAME, A.TANA, B.RUTE
FROM TABLE1 A
INNER JOIN TABLE2 B ON A.NAME = B.NAME AND A.NO = B.NO
引用返信
編集キー/
編集
■90236
/ inTopicNo.4)
Re[3]: 列名のデータで取得する方法
▲
▼
■
□投稿者/ 氏
(2回)-(2019/02/18(Mon) 19:34:06)
基本はkainaさんの言う通り、正規化するのがいいでしょう。
その上で、どうしてもテーブル構成を変更できない場合は
UNPIVOTを使う方法があります。
https://rextester.com/XLXC60078
引用返信
編集キー/
編集
トピック内ページ移動 / <<
0
>>
このトピックに書きこむ
過去ログには書き込み不可
管理者用
-
Child Tree
-