0

データベース内のオブジェクト (「ファイル」) に関する詳細を返すレポートを作成しています。私のアプリケーションでは、ユーザーがファイル オブジェクトに対して使用する独自のフラグを作成できます。フラグは基本的に名前で構成され、フラグ インスタンスは親ファイル オブジェクトに設定されているかどうかを示すビット値を格納します。

データベース内のファイルごとに 1 行を返すクエリを作成したいと考えています。結果セットの最初の数列にはファイルの詳細 (ID、名前、サイズなど) が含まれ、残りの列はフラグ名であり、ビット値が返されます。特定のファイル行にフラグが設定されているかどうかを示します。

それは理にかなっていますか?クエリを作成するにはどうすればよいですか?

助けてくれてありがとう。

編集:明確化..

このクエリの一部として、ユーザーによって作成されたフラグを返すサブクエリを実行する必要があります (設計時にはわかりません)。次に、メインクエリに各フラグ値のチェックを組み込み、詳細を返します。ファイルについて。

簡略化されたスキーマは次のとおりです。

  • ファイル {ID、名前}
  • フラグ {ID、名前}
  • FileFlags {FileId, FlagId} - このテーブルの行は、ファイルにフラグが設定されていることを示します

次のような列を含む結果セットを返すクエリが必要です。

FileId FileName Flag1Name Flag2Name .... FlagNName

4

4 に答える 4

1

必要なロジック(ユーザー固有のフラグのクエリなど)を使用してストアドプロシージャを作成し、それに基づいて、必要な変数を使用してクエリ文字列を動的に作成してみませんか?

次に、を使用EXECUTEして動的クエリセットをユーザーに返すことができます。http://msdn.microsoft.com/en-us/library/ms188332.aspxを参照してください

于 2009-04-18T14:37:09.813 に答える
1

まず、SQL Server 2005 以降で使用できるPivot関数を調べることから始めることができます。それといくつかの文字列連結により、任意の数の列に対してクエリを組み立てることができるはずです

あなたのコメントに基づいて、選択は次のようになります。

        SELECT <non-pivoted column>,

            [first pivoted column] AS <column name>,

            [second pivoted column] AS <column name>, ...
    From Table 
    PIVOT (
...
FOR 
...
)
于 2009-04-18T13:55:43.983 に答える
0

行を列に変換するクロス集計クエリが必要なようです。フラグは、親テーブルとの 1 対多の関係として別のテーブルに格納されていますか?

于 2009-04-18T13:48:01.303 に答える
-1

エイリアスが欲しいと思います。http://www.sql-tutorial.net/SQL-Aliases.aspの例を次に示します。

SELECT Employee, SUM(Hours) AS SumHoursPerEmployee
FROM EmployeeHours
GROUP BY Employee 

さらに支援するには、スキーマを確認する必要があります。

編集 ネストされたSELECTs が必要な場合があります。 http://sqlzoo.net/1a.htm

于 2009-04-18T13:40:22.273 に答える