他の回答を検索して、この特定の質問が既に尋ねられているかどうかを確認した後 (および他のフレーバーが尋ねられました - 問い合わせる必要があるすべてをカバーしていないだけです)、次のシナリオを提示し、ほとんどのアドバイスを求めたいと思います。このレポート クエリを作成する効率的な方法。これは冗長な投稿であり、残念ながら T-SQL コードを投稿することは許可されていません。私の雇用主は明示的に禁止しています。
私が何年にもわたって学んだことの1つは、私よりもはるかに多くのことを知っている人がたくさんいるということです.
すべてのテーブルには主キーがあり、子テーブルにリンクするテーブルがある場合は、外部キーが配置されています。データベースとレポート サーバーは SQL 2008 R2 です。サーバーは 128GB の RAM を実行し、4CPU クアッド コアのハイパー スレッド化された野獣です。
まず、場所、セクション、およびエリアを含む一連のテーブルがあります。ロケーションはマッピング テーブルを介してセクションにリンクされます。セクションには複数のロケーションがあり、セクションはマッピング テーブルを介してエリアにリンクされ、複数のセクションがエリアにリンクされます。これらのテーブルはすべてデータベース「A」にあります。別のデータベース「B」にビューを作成しました。これは、迅速に実行される優れた結果セットでエリア - セクション - ロケーションのリンクを表します。これを LocationSectionArea ビューと呼びます。
データベース「B」では、何千人ものユーザーが、自分の仕事のあらゆる種類のカテゴリに関する毎日の統計を入力しています。現在91のカテゴリーがあります。各カテゴリには、約 3 から最大 25 までのサブカテゴリが含まれます。カテゴリとサブカテゴリの数は、管理インターフェイスを介して追加または削除され、いつでも変更できます。これらのリンクを表し、CategorySubCategoryFields ビューと呼ばれる結果セットを返すビューを作成しました。
これらのカテゴリ/サブカテゴリ リンクごとに収集される情報はさまざまです。約 8 つの異なるフィールドが必要なものもあれば、3 つしか必要ないものもあれば、1 つしか必要ないものもあります。これらのフィールドは、適切なサブカテゴリにリンクされています。これもデータベース「B」に含まれています。
私は、このデータベースでこのデータをうまくまとめるビューを構築しました。これは、非常に簡単にレポートできる方法でデータを提示する結果の大きなマトリックスになります。これまでのビューの実行は、速度。これを UserStatsView と呼びます。これはデータベース「B」に含まれています。
ここで、データを入力するユーザーは、前述のいずれかの場所に割り当てられます。結果は、セクション内のすべての場所、およびエリア内のすべてのセクションを表示する必要があり、各場所について、そのカテゴリの各カテゴリとサブカテゴリを表示する必要があります。次に、これを UserStatsView からの結果にリンクする必要があるため、これらの結果のマトリックスがかなり大きくなり、結果のない多くの 0 が混在しますが、これらはレポート目的で作成されます。
レポートは、ユーザーがセクションを選択できるようにする必要があります。たとえば、セクションを選択し、そのセクションに含まれるすべての場所のレポートを、その場所に対してユーザーが入力した結果の集計とともに、カテゴリとサブカテゴリの組み合わせごとに生成できるようにする必要があります。がある。ユーザーが入力した実際の結果があるかどうかに関係なく、セクションのすべての場所とすべてのカテゴリ-サブカテゴリを表示する必要があります。そのため、一部のレポートには多くの 0 が含まれる場合があります。
これを実現するために、LocationSectionArea を CategorySubCategoryFields ビューと交差結合する結果ビューを作成しました。これにより、必要な基本的なマトリックスが作成されました。次に、このマトリックスを UserStatsView の結果に結合し、LocationId、CategoryId、および SubCategoryId を結合して、場所のユーザーの結果を挿入しました。これはすべてデータベース「B」に作成されます。
これですべてが機能し、レコードの数を減らすために最後の where 句に十分なフィルターを指定すれば「OK」です。イメージできるように、より大きな結果セットでレポートを実行しようとすると、非常に遅くなり始めます。(つまり、すべての場所で 6 か月をカバーする日付範囲には 30 秒以上かかります)
私の問題の一部は、ロケーション情報がデータベース「A」からリンクされており、構築されたビューが、このレポートに必要な他のすべての情報のすべてのビュー テーブルとレコードと共にデータベース「B」に含まれていると考えていることです。
もう 1 つの部分は、非常に大規模で複雑な相互結合が作成され、ユーザーの結果のビューにリンクされていることです。クロス結合は、UserStatsView 結果セットと結合されるまで、インデックスや関連データのないデカルトの結果です。
そして、私が信じている 3 番目の問題は、SSRS にフィードできる結果構造を生成するために、すべての空白を埋めるためにデータが「作成」されているという事実です。テーブルのスプーリングとハッシュ結合に多くの実行時間がかかり、場所、セクション、およびエリアを使用したデータベースからの検索も行われていることがわかりました。これらはすべて、クエリ実行の見積もりプランを通じて示されました。
私が求めているのは、上記の基準を考慮して、この結果セットを生成するより良い方法があるかどうかを誰かが知っているかどうかです. これを行うための本当にシンプルで高速な方法を完全に見逃していましたか?これは非常に可能性が高いです:)。誰かが私が何を研究すべきかを提案できるなら、私は喜んでそれを実行します - ただ、この段階で何を研究すべきかわかりませんか?
乾杯
ロッド。
更新: 以下は、2 つのデータベースを定義するテーブル構造です。明らかに、実際のテーブルにはもっと多くの機能がありますが、これがそれらがどのように組み合わされるかの核心です。このような大きな投稿をお許しください。キー フィールドといくつかのデータ フィールドを除くすべてを削除したので、テーブルがどのように構造化されているかがわかります。テーブル名とフィールド名は、多くの余分なフィールドが削除された一般的な名前に変更されているため、コードを投稿できます。
データベース A
**Location Table**
LocationId BIGINT PK
LocationName Varchar(100)
**Section Table**
SectionId Bigint PK
SectionName varchar(100)
**Area Table**
AreaId Bigint PK
AreaName varchar(100)
**LocationSectionMap Table**
LocSecId Bigint PK
LocationId Bigint FK Index to Location Table
SectionId BigInt FK Index to Section Table
**SectionAreaMap Table**
SecAreaId Bigint PK
SectionId Bigint FK Index to Section Table
AreaId Bigint FK Index to Area Table
データベース B
**Categories Table**
CategoryId Bigint PK
categoryName varchar(100)
**SubCategories Table**
SubCategoryId Bigint
CategoryId Bigint FK to Categories Table
SubCategoryType Int
FieldTypeId Int (1, 2, 3 or 4)
**UserStats Table**
UserStatId bigint PK
UserId Bigint
StartDate DateTime
EndDate DateTime
LocationId Bigint --> this is the location ID in Location table in database A
SectionId Bigint --> this is the Section ID in Section Table in database A
AreaId Bigint --> this is the Area ID of the Area Table in database A
**FieldType1 Table**
FieldType1Id bigint PK
UserStatId Bigint FK to UserStats Table
SubCategoryId Bigint FK to Subcategories Table
Value1 int
Value2 int
**FieldType2 Table**
FieldType2Id bigint PK
UserStatId Bigint FK to UserStats Table
SubCategoryId Bigint FK to Subcategories Table
Value1 int
Value2 int
Value4 int
Value5 int
Value6 int
Value7 int
Value8 int
Value9 int
Value10 int
**FieldType3 Table**
FieldType3Id bigint PK
UserStatId Bigint FK to UserStats Table
SubCategoryId Bigint FK to Subcategories Table
Value1 int
Value2 int
Value11 int
Value12 int
Value13 int
Value14 int
Value15 int
Value16 int
**FieldType4 Table**
FieldType4Id bigint PK
UserStatId Bigint FK to UserStats Table
SubCategoryId Bigint FK to Subcategories Table
CombinedValue1And2 int
**SubCategoryAssociations Table**
SubCategoryAssociationId Int PK
ReportOfSubCategoryId bigint FK to Subcategories Table
IncludeValuesFromSubcategoryId Bigint FK to Subcategories Table
ビュー: データベース A のエリア - セクション - ロケーション ビュー (vwAreasSectionsAndLocations)
SELECT A.AreaId, A.AreaName, C.SectionId, C.SectionName, E.LocationId, E.LocationName
FROM DatabaseA.dbo.tblAreas AS A INNER JOIN
DatabaseA.dbo.tblAreaSections AS B ON A.AreaId = B.AreaId INNER JOIN
DatabaseA.dbo.tblSections AS C ON B.SectionId = C.SectionId INNER JOIN
DatabaseA.dbo.tblSectionLocations AS D ON C.SectionId = D.SectionId INNER JOIN
DatabaseA.dbo.tblLocations AS E ON D.LocationId = E.LocationId
データベース B のカテゴリ-サブカテゴリ ビュー (vwCategoryAndSubCategory)
SELECT TOP (100) PERCENT dbo.tblCategories.CategoryId,
dbo.tblCategories.CategoryName,
dbo.tblSubCategory.SubCategoryId,
dbo.tblSubCategory.SubCategoryname,
dbo.tblSubCategory.SubCategoryTypeId
FROM dbo.tblCategories INNER JOIN
dbo.tblSubCategory ON dbo.tblCategories.CategoryId = dbo.tblSubCategory.CategoryId
ORDER BY dbo.tblCategories.CategoryName, dbo.tblSubCategory.SubCategoryname
2 つのビューをクロス結合して必要な結果マトリックスを作成するビュー (結果なし) (vwAreaSectionLocationCategorySubCategory)
SELECT dbo.vwCategoryAndSubCategory.CategoryId, dbo.vwCategoryAndSubCategory.CategoryName,
dbo.vwCategoryAndSubCategory.CategoryPlacementOrder, dbo.vwCategoryAndSubCategory.IsStandardDaybookEntryCategory,
dbo.vwCategoryAndSubCategory.SubCategoryId, dbo.vwCategoryAndSubCategory.SubCategoryname, dbo.vwCategoryAndSubCategory.SubCategoryTypeId,
dbo.vwCategoryAndSubCategory.SubCategoryPlacementOrder, dbo.vwAreasSectionsAndLocations.AreaId, dbo.vwAreasSectionsAndLocations.AreaName,
dbo.vwAreasSectionsAndLocations.SectionId, dbo.vwAreasSectionsAndLocations.SectionName, dbo.vwAreasSectionsAndLocations.LocationId,
dbo.vwAreasSectionsAndLocations.LocationName
FROM dbo.vwCategoryAndSubCategory CROSS JOIN
dbo.vwAreasSectionsAndLocations
使用統計結果を作成するビュー (vwUserStatsResults)
SELECT dbo.tblUserStats.UserStatId,
dbo.tblUserStats.UserId,
dbo.tblUserStats.LocationId,
dbo.tblUserStats.SectionId,
dbo.tblUserStats.AreaId,
dbo.tblUserStats.StartDate,
dbo.tblUserStats.EndDate,
dbo.tblFieldType1.CategoryId,
dbo.tblFieldType1.SubCategoryId,
1 AS FieldTypeId,
(dbo.tblFieldType1.Value1 + ISNULL
((SELECT SUM(A.Value1)
FROM dbo.tblFieldType1 A
WHERE A.SubCategoryId IN
(SELECT DISTINCT IncludeValuesFromSubCategoryId
FROM dbo.tblSubCategoryAssociations
WHERE ReportOnSubCategoryId = A.SubCategoryId) AND dbo.tblFieldType1.UserStatId = A.UserStatId), 0)
+ ISNULL
((SELECT SUM(A.Value1)
FROM dbo.tblFieldType2 A
WHERE A.SubCategoryId IN
(SELECT DISTINCT IncludeValuesFromSubCategoryId
FROM dbo.tblSubCategoryAssociations
WHERE ReportOnSubCategoryId = A.SubCategoryId) AND dbo.tblFieldType1.UserStatId = A.UserStatId), 0)
+ ISNULL
((SELECT SUM(A.Value1)
FROM dbo.tblFieldType3 A
WHERE A.SubCategoryId IN
(SELECT DISTINCT IncludeValuesFromSubCategoryId
FROM dbo.tblSubCategoryAssociations
WHERE ReportOnSubCategoryId = A.SubCategoryId) AND dbo.tblFieldType1.UserStatId = A.UserStatId), 0))
AS Value1, (dbo.tblFieldType1.Value2 + ISNULL
((SELECT SUM(A.Value2)
FROM dbo.tblFieldType1 A
WHERE A.SubCategoryId IN
(SELECT DISTINCT IncludeValuesFromSubCategoryId
FROM dbo.tblSubCategoryAssociations
WHERE ReportOnSubCategoryId = A.SubCategoryId) AND dbo.tblFieldType1.UserStatId = A.UserStatId), 0)
+ ISNULL
((SELECT SUM(A.Value2)
FROM dbo.tblFieldType2 A
WHERE A.SubCategoryId IN
(SELECT DISTINCT IncludeValuesFromSubCategoryId
FROM dbo.tblSubCategoryAssociations
WHERE ReportOnSubCategoryId = A.SubCategoryId) AND dbo.tblFieldType1.UserStatId = A.UserStatId), 0)
+ ISNULL
((SELECT SUM(A.Value2)
FROM dbo.tblFieldType3 A
WHERE A.SubCategoryId IN
(SELECT DISTINCT IncludeValuesFromSubCategoryId
FROM dbo.tblSubCategoryAssociations
WHERE ReportOnSubCategoryId = A.SubCategoryId) AND dbo.tblFieldType1.UserStatId = A.UserStatId), 0))
AS Value2, Value1 + Value2 AS CombinedValue1And2, 0 AS Value3, 0 AS Value4,
0 AS Value5, 0 AS Value6, 0 AS Value7, 0 AS Value8,
0 AS Value9, 0 AS Value10, 0 AS Value11, 0 AS Value12, 0 AS Value13,
0 AS Value14, 0 AS Value15, 0 AS Value16
FROM dbo.tblUserStats INNER JOIN
dbo.tblFieldType1 ON dbo.tblUserStats.UserStatId = dbo.tblFieldType1.UserStatId
UNION ALL
SELECT dbo.tblUserStats.UserStatId,
dbo.tblUserStats.UserId,
dbo.tblUserStats.LocationId,
dbo.tblUserStats.SectionId,
dbo.tblUserStats.AreaId,
dbo.tblUserStats.StartDate,
dbo.tblUserStats.EndDate,
dbo.tblFieldType2.CategoryId,
dbo.tblFieldType2.SubCategoryId,
2 AS FieldTypeId,
dbo.tblFieldType2.Value1 + ISNULL
((SELECT SUM(Value1) AS Expr1
FROM dbo.tblFieldType1 AS A
WHERE (FieldId IN
(SELECT DISTINCT IncludeValuesFromSubCategoryId
FROM dbo.tblSubCategoryAssociations
WHERE (ReportOnSubCategoryId = A.SubCategoryId))) AND (dbo.tblFieldType2.UserStatId = UserStatId)), 0)
+ ISNULL
((SELECT SUM(Value1) AS Expr1
FROM dbo.tblFieldType2 AS A
WHERE (FieldId IN
(SELECT DISTINCT IncludeValuesFromSubCategoryId
FROM dbo.tblSubCategoryAssociations
WHERE (ReportOnSubCategoryId = A.SubCategoryId))) AND (dbo.tblFieldType2.UserStatId = UserStatId)), 0)
+ ISNULL
((SELECT SUM(Value1) AS Expr1
FROM dbo.tblFieldType3 AS A
WHERE (FieldId IN
(SELECT DISTINCT IncludeValuesFromSubCategoryId
FROM dbo.tblSubCategoryAssociations
WHERE (ReportOnSubCategoryId = A.SubCategoryId))) AND (dbo.tblFieldType2.UserStatId = UserStatId)), 0)
AS Value1, dbo.tblFieldType2.Value2 + ISNULL
((SELECT SUM(Value2) AS Expr1
FROM dbo.tblFieldType1 AS A
WHERE (FieldId IN
(SELECT DISTINCT IncludeValuesFromSubCategoryId
FROM dbo.tblSubCategoryAssociations
WHERE (ReportOnSubCategoryId = A.SubCategoryId))) AND (dbo.tblFieldType2.UserStatId = UserStatId)), 0)
+ ISNULL
((SELECT SUM(Value2) AS Expr1
FROM dbo.tblFieldType2 AS A
WHERE (FieldId IN
(SELECT DISTINCT IncludeValuesFromSubCategoryId
FROM dbo.tblSubCategoryAssociations
WHERE (ReportOnSubCategoryId = A.SubCategoryId))) AND (dbo.tblFieldType2.UserStatId = UserStatId)), 0)
+ ISNULL
((SELECT SUM(Value2) AS Expr1
FROM dbo.tblFieldType3 AS A
WHERE (FieldId IN
(SELECT DISTINCT IncludeValuesFromSubCategoryId
FROM dbo.tblSubCategoryAssociations
WHERE (ReportOnSubCategoryId = A.SubCategoryId))) AND (dbo.tblFieldType2.UserStatId = UserStatId)), 0)
AS Value2, dbo.tblFieldType2.Value1 + dbo.tblFieldType2.Value2 AS CombinedValue1And2,
ISNULL(dbo.tblFieldType2.Value3, 0), ISNULL(dbo.tblFieldType2.Value4, 0),
ISNULL(dbo.tblFieldType2.Value5, 0), ISNULL(dbo.tblFieldType2.Value6, 0),
ISNULL(dbo.tblFieldType2.Value7, 0), ISNULL(dbo.tblFieldType2.Value8, 0),
ISNULL(dbo.tblFieldType2.Value9, 0), ISNULL(dbo.tblFieldType2.Value10, 0),
0 AS Value11, 0 AS Value12, 0 AS Value13, 0 AS Value14, 0 AS Value15,
0 AS Value16
FROM dbo.tblUserStats INNER JOIN
dbo.tblFieldType2 ON dbo.tblUserStats.UserStatId = dbo.tblFieldType2.UserStatId
UNION ALL
SELECT dbo.tblUserStats.UserStatId,
dbo.tblUserStats.UserId,
dbo.tblUserStats.LocationId,
dbo.tblUserStats.SectionId,
dbo.tblUserStats.AreaId,
dbo.tblUserStats.StartDate,
dbo.tblUserStats.EndDate,
dbo.tblFieldType3.CategoryId,
dbo.tblFieldType3.SubCategoryId,
3 AS FieldTypeId,
dbo.tblFieldType3.Value1 + ISNULL
((SELECT SUM(Value1) AS Expr1
FROM dbo.tblFieldType1 AS A
WHERE (FieldId IN
(SELECT DISTINCT IncludeValuesFromSubCategoryId
FROM dbo.tblSubCategoryAssociations
WHERE (ReportOnSubCategoryId = A.SubCategoryId))) AND (dbo.tblFieldType3.UserStatId = UserStatId)), 0)
+ ISNULL
((SELECT SUM(Value1) AS Expr1
FROM dbo.tblFieldType2 AS A
WHERE (FieldId IN
(SELECT DISTINCT IncludeValuesFromSubCategoryId
FROM dbo.tblSubCategoryAssociations
WHERE (ReportOnSubCategoryId = A.SubCategoryId))) AND (dbo.tblFieldType3.UserStatId = UserStatId)), 0)
+ ISNULL
((SELECT SUM(Value1) AS Expr1
FROM dbo.tblFieldType3 AS A
WHERE (FieldId IN
(SELECT DISTINCT IncludeValuesFromSubCategoryId
FROM dbo.tblSubCategoryAssociations
WHERE (ReportOnSubCategoryId = A.SubCategoryId))) AND (dbo.tblFieldType3.UserStatId = UserStatId)), 0)
AS Value1, dbo.tblFieldType3.Value2 + ISNULL
((SELECT SUM(Value2) AS Expr1
FROM dbo.tblFieldType1 AS A
WHERE (FieldId IN
(SELECT DISTINCT IncludeValuesFromSubCategoryId
FROM dbo.tblSubCategoryAssociations
WHERE (ReportOnSubCategoryId = A.SubCategoryId))) AND (dbo.tblFieldType3.UserStatId = UserStatId)), 0)
+ ISNULL
((SELECT SUM(Value2) AS Expr1
FROM dbo.tblFieldType2 AS A
WHERE (FieldId IN
(SELECT DISTINCT IncludeValuesFromSubCategoryId
FROM dbo.tblSubCategoryAssociations
WHERE (ReportOnSubCategoryId = A.SubCategoryId))) AND (dbo.tblFieldType3.UserStatId = UserStatId)), 0)
+ ISNULL
((SELECT SUM(Value2) AS Expr1
FROM dbo.tblFieldType3 AS A
WHERE (FieldId IN
(SELECT DISTINCT IncludeValuesFromSubCategoryId
FROM dbo.tblSubCategoryAssociations
WHERE (ReportOnSubCategoryId = A.SubCategoryId))) AND (dbo.tblFieldType3.UserStatId = UserStatId)), 0)
AS Value2, dbo.tblFieldType3.Value1 + dbo.tblFieldType3.Value2 AS CombinedValue1And2, 0 AS Value3,
0 AS Value4, 0 AS Value5, 0 AS Value6, 0 AS Value7,
0 AS Value8, 0 AS Value9, 0 AS Value10,
ISNULL(dbo.tblFieldType3.Value11, 0), ISNULL(dbo.tblFieldType3.Value12, 0),
ISNULL(dbo.tblFieldType3.Value13, 0), ISNULL(dbo.tblFieldType3.Value14, 0),
ISNULL(dbo.tblFieldType3.Value15, 0), ISNULL(dbo.tblFieldType3.Value16, 0)
FROM dbo.tblUserStats INNER JOIN
dbo.tblFieldType3 ON dbo.tblUserStats.UserStatId = dbo.tblFieldType3.UserStatId
UNION ALL
SELECT dbo.tblUserStats.UserStatId,
dbo.tblUserStats.UserId,
dbo.tblUserStats.LocationId,
dbo.tblUserStats.SectionId,
dbo.tblUserStats.AreaId,
dbo.tblUserStats.StartDate,
dbo.tblUserStats.EndDate,
dbo.tblFieldType4.CategoryId,
dbo.tblFieldType4.SubCategoryId,
4 AS FieldTypeId,
0 AS Value1, 0 AS Value2, dbo.tblFieldType4.CombinedValue1And2 + (ISNULL
((SELECT SUM(A.Value1)
FROM dbo.tblFieldType1 A
WHERE A.SubCategoryId IN
(SELECT DISTINCT IncludeValuesFromSubCategoryId
FROM dbo.tblSubCategoryAssociations
WHERE ReportOnSubCategoryId = A.SubCategoryId) AND dbo.tblFieldType4.UserStatId = A.UserStatId), 0)
+ ISNULL
((SELECT SUM(A.Value1)
FROM dbo.tblFieldType2 A
WHERE A.SubCategoryId IN
(SELECT DISTINCT IncludeValuesFromSubCategoryId
FROM dbo.tblSubCategoryAssociations
WHERE ReportOnSubCategoryId = A.SubCategoryId) AND dbo.tblFieldType4.UserStatId = A.UserStatId), 0)
+ ISNULL
((SELECT SUM(A.Value1)
FROM dbo.tblFieldType3 A
WHERE A.SubCategoryId IN
(SELECT DISTINCT IncludeValuesFromSubCategoryId
FROM dbo.tblSubCategoryAssociations
WHERE ReportOnSubCategoryId = A.SubCategoryId) AND dbo.tblFieldType4.UserStatId = A.UserStatId), 0))
+ (ISNULL
((SELECT SUM(A.Value2)
FROM dbo.tblFieldType1 A
WHERE A.SubCategoryId IN
(SELECT DISTINCT IncludeValuesFromSubCategoryId
FROM dbo.tblSubCategoryAssociations
WHERE ReportOnSubCategoryId = A.SubCategoryId) AND dbo.tblFieldType4.UserStatId = A.UserStatId), 0)
+ ISNULL
((SELECT SUM(A.Value2)
FROM dbo.tblFieldType2 A
WHERE A.SubCategoryId IN
(SELECT DISTINCT IncludeValuesFromSubCategoryId
FROM dbo.tblSubCategoryAssociations
WHERE ReportOnSubCategoryId = A.SubCategoryId) AND dbo.tblFieldType4.UserStatId = A.UserStatId), 0)
+ ISNULL
((SELECT SUM(A.Value2)
FROM dbo.tblFieldType3 A
WHERE A.SubCategoryId IN
(SELECT DISTINCT IncludeValuesFromSubCategoryId
FROM dbo.tblSubCategoryAssociations
WHERE ReportOnSubCategoryId = A.SubCategoryId) AND dbo.tblFieldType4.UserStatId = A.UserStatId), 0))
AS CombinedValue1And2, 0 AS Value3, 0 AS Value4, 0 AS Value5, 0 AS Value6,
0 AS Value7, 0 AS Value8, 0 AS Value9, 0 AS Value10,
0 AS Value11, 0 AS Value12, 0 AS Value13, 0 AS Value14, 0 AS Value15,
0 AS Value16
FROM dbo.tblUserStats INNER JOIN
dbo.tblFieldType4 ON dbo.tblUserStats.UserStatId = dbo.tblFieldType4.UserStatId
最後に、すべてをまとめたビュー (vwReportResults)
文字数制限の為、別エントリで投稿