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

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

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

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

解決済

SQLの別テーブルの情報を取得し、取得結果によって出力内容を変更する

h-kn
reimei

総合スコア10

SQL Server

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

1回答

0リアクション

0クリップ

281閲覧

投稿2022/09/08 03:09

前提

SQL初心者です
現在SQLで備考の非表示フラグが1の場合はタイトル、内容を読み込まず空白データを出力させる機能を作成中です

実現したいこと

・マジックナンバーを利用してはいけないとのご指摘を頂いたのですが、どのように修正するかわからない
・SQLをもう少し分かりやすくしたい

SQLデータ

DATA

DATA_NODATA_BIKO1DATA_BIKO2DATA_BIKO3DATA_BIKO4DATA_BIKO5
1ここは備考ですここは履歴ですここは注意事項ですここはその他ですここは日時です
2hogehogehugahugahoge
:::::

CODMST

COD_KBNCOD_CODECOD_NAMECOD_DELFLG
BIKOTL1備考0
BIKOTL2履歴0
BIKOTL3注意事項0
BIKOTL4その他1
BIKOTL5日時1

該当のソースコード

SELECT
DATA_BIKO1 = IIF((SELECT COD_DELFLG FROM CODMST WHERE COD_KBN = 'BIKOTL' AND CONVERT(smallint, COD_CODE) = 1)= 1,'',DATA_BIKO1),
DATA_BIKO2 = IIF((SELECT COD_DELFLG FROM CODMST WHERE COD_KBN = 'BIKOTL' AND CONVERT(smallint, COD_CODE) = 2)= 1,'',DATA_BIKO2),
DATA_BIKO3 = IIF((SELECT COD_DELFLG FROM CODMST WHERE COD_KBN = 'BIKOTL' AND CONVERT(smallint, COD_CODE) = 3)= 1,'',DATA_BIKO3),
DATA_BIKO4 = IIF((SELECT COD_DELFLG FROM CODMST WHERE COD_KBN = 'BIKOTL' AND CONVERT(smallint, COD_CODE) = 4)= 1,'',DATA_BIKO4),
DATA_BIKO5 = IIF((SELECT COD_DELFLG FROM CODMST WHERE COD_KBN = 'BIKOTL' AND CONVERT(smallint, COD_CODE) = 5)= 1,'',DATA_BIKO5),
BIKO1 = IIF((SELECT COD_DELFLG FROM CODMST WHERE COD_KBN = 'BIKOTL' AND CONVERT(smallint, COD_CODE) = 1)= 1,'',(SELECT COD_NAME FROM CODMST WHERE COD_KBN = 'BIKOTL' AND CONVERT(smallint, COD_CODE) = 1)),
BIKO2 = IIF((SELECT COD_DELFLG FROM CODMST WHERE COD_KBN = 'BIKOTL' AND CONVERT(smallint, COD_CODE) = 2)= 1,'',(SELECT COD_NAME FROM CODMST WHERE COD_KBN = 'BIKOTL' AND CONVERT(smallint, COD_CODE) = 2)),
BIKO3 = IIF((SELECT COD_DELFLG FROM CODMST WHERE COD_KBN = 'BIKOTL' AND CONVERT(smallint, COD_CODE) = 3)= 1,'',(SELECT COD_NAME FROM CODMST WHERE COD_KBN = 'BIKOTL' AND CONVERT(smallint, COD_CODE) = 3)),
BIKO4 = IIF((SELECT COD_DELFLG FROM CODMST WHERE COD_KBN = 'BIKOTL' AND CONVERT(smallint, COD_CODE) = 4)= 1,'',(SELECT COD_NAME FROM CODMST WHERE COD_KBN = 'BIKOTL' AND CONVERT(smallint, COD_CODE) = 4)),
BIKO5 = IIF((SELECT COD_DELFLG FROM CODMST WHERE COD_KBN = 'BIKOTL' AND CONVERT(smallint, COD_CODE) = 5)= 1,'',(SELECT COD_NAME FROM CODMST WHERE COD_KBN = 'BIKOTL' AND CONVERT(smallint, COD_CODE) = 5))
FROM DATA

実行結果

太字 = 上枠から順にBIKO1,BIKO2...
太字下部 = 上枠から順にDATA_BIKO1.DATA_BIKO2
※DATA_NO = 1の出力結果です
イメージ説明

補足情報(FW/ツールのバージョンなど)

vb.net内でGrapeCity.ActiveReportsに出力するためのSQLです

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

まだ回答がついていません

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

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

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

ただいまの回答率
86.12%

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

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

質問する

関連した質問

同じタグがついた質問を見る

SQL Server

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