前提
SQL初心者です
現在SQLで備考の非表示フラグが1の場合はタイトル、内容を読み込まず空白データを出力させる機能を作成中です
実現したいこと
・マジックナンバーを利用してはいけないとのご指摘を頂いたのですが、どのように修正するかわからない
・SQLをもう少し分かりやすくしたい
SQLデータ
DATA
DATA_NO | DATA_BIKO1 | DATA_BIKO2 | DATA_BIKO3 | DATA_BIKO4 | DATA_BIKO5 |
---|---|---|---|---|---|
1 | ここは備考です | ここは履歴です | ここは注意事項です | ここはその他です | ここは日時です |
2 | hoge | hoge | huga | huga | hoge |
: | : | : | : | : | : |
CODMST
COD_KBN | COD_CODE | COD_NAME | COD_DELFLG |
---|---|---|---|
BIKOTL | 1 | 備考 | 0 |
BIKOTL | 2 | 履歴 | 0 |
BIKOTL | 3 | 注意事項 | 0 |
BIKOTL | 4 | その他 | 1 |
BIKOTL | 5 | 日時 | 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です
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/09/09 01:51