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

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

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

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

Q&A

解決済

3回答

1031閲覧

【SQLServer2014】select文に列追加/ case when??で同じパターンで複数の値を返す

bilibaradu

総合スコア1

SQL Server

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

0グッド

0クリップ

投稿2023/02/02 01:50

編集2023/02/02 15:47

実現したいこと

イメージ説明
case whenか別の方法でTable Cを作りたいです。
しかし、TableBのグループの項目の列は現在存在していないので、直接select文に書こうと思います。

質問

SQLServerでビューを作っています。
条件(条件1)が同じで、複数の値を返して欲しいです。

■■ 以下のように試しましたが、case whenの最初行の少年グループしか出ません。
「select , ‘○○’ as グループ」にしても、一つの値しか追加できません。

Table A a INNER JOIN (SELECT (CASE WHEN 商品 = Teddy Bear THEN 少年 WHEN 商品 = Teddy Bear THEN 青年 WHEN 商品 = Teddy Bear THEN 成人 ELSE NULL END) as グループ from Table B) b on a.商品 = b.商品

CASE WHENで実現できますでしょうか。もしくは他の方法で実現できますか。
ご存知の方、教えていただけますでしょうか。

参考した資料
1."SELECT文で表示する際に任意の列を追加する方法!"
https://programmer-life.work/sql/add-column-select-sql

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

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

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

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

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

yambejp

2023/02/02 01:52

「条件が同じで、複数の値を返して欲しい」のおっしゃる意味がわかりません 具体的にどういうデータからどういう結果がほしいのか例示できますか?
m.ts10806

2023/02/02 01:55 編集

サンプルで良いので、具体的なテーブル定義とデータ(SQL文で提示されるとありがたい)、 どういう結果を得たいのかを具体的に(複数の値を得た結果の表とか処理結果) そして自身が試したことを記載されたほうが良いと思います。 (現状だと大目標が見えにくい) 要件次第ですが、まぁ現状だけだと「CASEでは不可」です。
m.ts10806

2023/02/02 02:07

編集されたようですが具体性はないと思います。 文章で難しそうなら図示するなどしてもらえたら
yambejp

2023/02/02 02:18

条件も条件1をなんども評価していますがこれは各条件は違うんですよね?
bilibaradu

2023/02/02 02:18

ご指摘ありがとうございます。 図示を追加しました!
m.ts10806

2023/02/02 03:32

何度も申し訳ないですが質問タグMySQLは外しておいたほうが良いと思います。 あとは質問本文にSQL Serverのバージョンを追加
yambejp

2023/02/02 03:57

> TableBのグループの項目の列は現在存在していない の意味がわかりません。逆にどうやって少年・青年・成人があると判断するのですか?
guest

回答3

0

自己解決

すみません、結局TABLE Bにグループ項目を追加し、
そしてTABEL A とinner joinで解決できました。
ご指導頂きありがとうございました!

投稿2023/02/02 06:47

bilibaradu

総合スコア1

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

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

0

クロス集計した結果を希望されているなら、以下が参考になるでしょう。
【SQL Server】PIVOT演算子を使用して、クロス集計表を作成する
【SQL】CASE式を使用して、クロス集計表を作成する

投稿2023/02/02 06:03

sazi

総合スコア25041

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

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

0

かなりぼやっとした質問なのでぼやっとした回答になりますが

(CASE WHEN 条件1 THEN 値1 ELSE NULL END)
(CASE WHEN 条件2 THEN 値2 ELSE NULL END)
(CASE WHEN 条件3 THEN 値3 ELSE NULL END)

をそれぞれ抽出してconcatするとかでしょうか

追記

ER図を見る限り単にouter joinするだけですよね?

SQL

1select * from tableA left join tableB on tableA.商品=tableB.商品

投稿2023/02/02 01:58

編集2023/02/02 02:21
yambejp

総合スコア114390

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

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

bilibaradu

2023/02/02 02:04

回答ありがとう! ちょっともっと具体的に説明を書きました。
bilibaradu

2023/02/02 02:25

table Bにグループの項目の列がない場合はどうしますか。
yambejp

2023/02/02 02:27

> グループの項目の列がない ない場合のサンプルER図を記載ください それこそcase when で処理すれば良いような気がしますが・・
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.53%

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

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

質問する

関連した質問