異なるフォーマットとロジックを持つ複数のテーブルを処理するためのストアドプロシージャの設計

Dhruv

T-SQL、SQL Server Management Studio 15.0.18131.0

検証する必要のある一連のテーブルがあります。これらはすべて類似した列を持っています-完全に同じではありませんが、それらを読み取ると、同じ情報を推測できます。ただし、これらの各テーブルには、検証に異なるロジックを使用する列がわずかに多かれ少なかれあります。例えば:

  • A = [ColA、ColB、ColC]
  • B = [ColA、ColY、ColC]

  • テーブルAを検証します。列AとCを使用しますが、Bも重要と見なします。

  • テーブルBの検証では、列AとCのみを使用します。

SQLの経験が限られているので、いくつかの選択肢があります。

  1. 検証するテーブルごとにストアドプロシージャを作成します

  2. 1つのストアドプロシージャで、各テーブルと各検証ロジックタイプの検証クエリを作成します

  3. 1つのストアドプロシージャで、検証クエリを文字列の断片(動的SQLの場合)に分割し、各テーブルに必要なロジックに基づいて各検証クエリをまとめます。

現在、#3のようなことをしています。

DECLARE @PartA ....
DECLARE @PartB ....

DECLARE @Validate = @PartA + @PartB

EXEC @Validate

これは主に、クエリを実行する代わりに、デバッグフラグを渡したときに実行されるクエリを出力できるようにするために行われます。

しかし、私の現在のシナリオでは、6つの検証を含む5つのテーブルがあり、2つの異なるロジックシナリオがあります(2つのテーブルは他の3つとは少し異なります)。これは少しおかしなことになります。5つのソーステーブル変数、5つの宛先テーブル変数、11のステートメント変数、およびその他の小さな変数がたくさんあるからです。

クエリは次のようになります。

SET @ValidateQuery1 = @Validate1 + @Validate2 + @Validate4 + @Validate5 + ' COUNT(PlanningCategoryKey) KeyCount FROM (' +  @Validate3   + @Validate5 + @Validate6 + @Table1 + @Validate7 + ')A' + @Validate8 + @Validate9

今、私はSQLの経験があまりありませんが、これを達成するためのより良い方法があるかどうか疑問に思っています。

2つの質問があります:

  1. クエリを実行する代わりに印刷する組み込みまたは効率的な方法はありますか?SSMSには「結果にクエリを含める」オプションがありますが、これもクエリを実行します。クエリを文字列として入力し、現在のように出力せずにこれを行う方法を示す特定の結果は見つかりませんでした。

  2. そのようなシナリオのための設計原則、ガイドライン、または一般的なコンセンサス設計はありますか?検証を簡単に実行できるようにソーステーブルの標準化に取り組んでいますが、これらは外部データソースからのものであるため、直接制御することはできません。

お手数をおかけしますが、よろしくお願いいたします。

LoztInSpace

テーブルごとに1つの検証を作成します。データとルールは明らかに同じではないのに、なぜそれらをそのように扱うのですか?同様のサブ検証がある場合は、手続き型言語と同じ関数を記述し、それをクエリ/手続きに組み込むことができます。

これを行うと、動的SQLとは異なり、クエリがどうなるかがわかっているため、クエリを出力する理由が少なくなります。

別のアプローチは、すべてのソーステーブルを標準テーブルにプッシュし、それに検証を適用することです。データと状況を知らなければ、それが良いか悪いかを知るのは難しいですが。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

複数のifelseと異なるテーブルを持つwhereを使用したストアドプロシージャ

分類Dev

2つの異なるデータベースPL / SQLの2つのテーブルで一致するレコードをチェックするためのストアドプロシージャ

分類Dev

1つのストアドプロシージャで複数のテーブルとストアドプロシージャを作成する方法

分類Dev

1つのストアドプロシージャで複数のテーブルとストアドプロシージャを作成する方法

分類Dev

アクティブストレージ:フォームが再表示されるときにアップロードされたファイルを保持/キャッシュするためのベストプラクティス

分類Dev

複数のフィールドを持つJavaScriptプロンプトボックスを設計する方法

分類Dev

テーブルとは異なるストアドプロシージャのスキーマルックアップ(バグ?)

分類Dev

異なるIPアドレスと名前を持つ複数のノードにブートストラップするシェルスクリプト

分類Dev

複数のテーブルから選択するためのストアドプロシージャ

分類Dev

異なるメソッドとプロパティを持つ1つのインターフェイスからの異なるオブジェクト

分類Dev

NodeとMulterを使用した複数の異なるファイルのアップロードの処理

分類Dev

複数の結合を持つストアドプロシージャのUPDATEテーブル

分類Dev

複数のテーブルの特定の列とストアドプロシージャをExcelシートに表示するにはクエリが必要です

分類Dev

次のプログレッシブIDを取得するためのストアドプロシージャ

分類Dev

デリゲートメソッドのデフォルトの動作でUITextFieldをサブクラス化するための設計アプローチ

分類Dev

SqlQueryを使用してストアドプロシージャからの複数の結果を処理する

分類Dev

ストアドプロシージャのアーキテクチャ-MVCアプリケーションでストアドプロシージャを処理する必要がありますか、それとも「ワーカーロール」に似たもので処理する必要がありますか?

分類Dev

さまざまなオブジェクト プロパティをフォーマットするための Angular 1.5 カスタム フィルター

分類Dev

ジャージーの安らかなWebサービス-複数のオブジェクトを使用したファイルのアップロード

分類Dev

すでにテーブルにある値をチェックするためのストアドプロシージャ

分類Dev

Excelのさまざまなタブへのストアドプロシージャで複数の結果セットを生成するための最良の方法/プラクティス

分類Dev

テーブル名でレコードを更新するためのストアドプロシージャ

分類Dev

ストアドプロシージャ内の複数のテーブルからの関連するルックアップ情報の表示

分類Dev

Pandas IOSQLと複数の結果セットを持つストアドプロシージャ

分類Dev

オブジェクト変数の取得、ブロック変数が設定されていないVBAを使用してSQLServerストアドプロシージャをプルしようとするとエラーが発生します

分類Dev

このMySQLストアドプロシージャをフォーマットする方法は?

分類Dev

同じ列の異なる列を持つストアドプロシージャからDateDiffを取得する

分類Dev

複数のシートを持つ別のワークブックの値を合計するマクロ

分類Dev

mysqlストアドプロシージャでループするための変数としてテーブルを渡す

Related 関連記事

  1. 1

    複数のifelseと異なるテーブルを持つwhereを使用したストアドプロシージャ

  2. 2

    2つの異なるデータベースPL / SQLの2つのテーブルで一致するレコードをチェックするためのストアドプロシージャ

  3. 3

    1つのストアドプロシージャで複数のテーブルとストアドプロシージャを作成する方法

  4. 4

    1つのストアドプロシージャで複数のテーブルとストアドプロシージャを作成する方法

  5. 5

    アクティブストレージ:フォームが再表示されるときにアップロードされたファイルを保持/キャッシュするためのベストプラクティス

  6. 6

    複数のフィールドを持つJavaScriptプロンプトボックスを設計する方法

  7. 7

    テーブルとは異なるストアドプロシージャのスキーマルックアップ(バグ?)

  8. 8

    異なるIPアドレスと名前を持つ複数のノードにブートストラップするシェルスクリプト

  9. 9

    複数のテーブルから選択するためのストアドプロシージャ

  10. 10

    異なるメソッドとプロパティを持つ1つのインターフェイスからの異なるオブジェクト

  11. 11

    NodeとMulterを使用した複数の異なるファイルのアップロードの処理

  12. 12

    複数の結合を持つストアドプロシージャのUPDATEテーブル

  13. 13

    複数のテーブルの特定の列とストアドプロシージャをExcelシートに表示するにはクエリが必要です

  14. 14

    次のプログレッシブIDを取得するためのストアドプロシージャ

  15. 15

    デリゲートメソッドのデフォルトの動作でUITextFieldをサブクラス化するための設計アプローチ

  16. 16

    SqlQueryを使用してストアドプロシージャからの複数の結果を処理する

  17. 17

    ストアドプロシージャのアーキテクチャ-MVCアプリケーションでストアドプロシージャを処理する必要がありますか、それとも「ワーカーロール」に似たもので処理する必要がありますか?

  18. 18

    さまざまなオブジェクト プロパティをフォーマットするための Angular 1.5 カスタム フィルター

  19. 19

    ジャージーの安らかなWebサービス-複数のオブジェクトを使用したファイルのアップロード

  20. 20

    すでにテーブルにある値をチェックするためのストアドプロシージャ

  21. 21

    Excelのさまざまなタブへのストアドプロシージャで複数の結果セットを生成するための最良の方法/プラクティス

  22. 22

    テーブル名でレコードを更新するためのストアドプロシージャ

  23. 23

    ストアドプロシージャ内の複数のテーブルからの関連するルックアップ情報の表示

  24. 24

    Pandas IOSQLと複数の結果セットを持つストアドプロシージャ

  25. 25

    オブジェクト変数の取得、ブロック変数が設定されていないVBAを使用してSQLServerストアドプロシージャをプルしようとするとエラーが発生します

  26. 26

    このMySQLストアドプロシージャをフォーマットする方法は?

  27. 27

    同じ列の異なる列を持つストアドプロシージャからDateDiffを取得する

  28. 28

    複数のシートを持つ別のワークブックの値を合計するマクロ

  29. 29

    mysqlストアドプロシージャでループするための変数としてテーブルを渡す

ホットタグ

アーカイブ