SQL Server 2000データベースでASP.netメンバシップシステムを使用しています。私は何をしたい(それがより良いかどうか、ストアドプロシージャ)次の列を持つテーブルを返しますどのビューを作成することです:クロス集計のような3つのテーブルからのデータの表示をSQLビューに表示
(ユーザ名以外の)列がすべてASP.netを含むように生成されUserName | Role1 | Role2 | Role3 | .... | Role*N*
アプリケーション内のロール。
これは一般的なものである必要があります(つまり、新しい役割を追加するときは、手順/ビューでその新しい役割を補うことができます)。そのロール内のユーザーがいる場合は、ロールフィールドの値を1(真)または0(偽)にします。私は、動的SQLを使用して列の可変数を作成するような列を持つテーブルを作成することはできますが、私はそれらを設定することはできません。
どうすればこの問題を解決できますか?関与
の表は以下の通りである:
CREATE TABLE [dbo].[aspnet_Users](
[ApplicationId] [uniqueidentifier] NOT NULL,
[UserId] [uniqueidentifier] NOT NULL,
[UserName] [nvarchar](256) NOT NULL,
[LoweredUserName] [nvarchar](256) NOT NULL,
[MobileAlias] [nvarchar](16) NULL,
[IsAnonymous] [bit] NOT NULL,
[LastActivityDate] [datetime] NOT NULL,
PRIMARY KEY NONCLUSTERED
(
[UserId] ASC
) ON [PRIMARY]
) ON [PRIMARY]
CREATE TABLE [dbo].[aspnet_Roles](
[ApplicationId] [uniqueidentifier] NOT NULL,
[RoleId] [uniqueidentifier] NOT NULL,
[RoleName] [nvarchar](256) NOT NULL,
[LoweredRoleName] [nvarchar](256) NOT NULL,
[Description] [nvarchar](256) NULL,
PRIMARY KEY NONCLUSTERED
(
[RoleId] ASC
) ON [PRIMARY]
) ON [PRIMARY]
CREATE TABLE [dbo].[aspnet_UsersInRoles](
[UserId] [uniqueidentifier] NOT NULL,
[RoleId] [uniqueidentifier] NOT NULL,
PRIMARY KEY CLUSTERED
(
[UserId] ASC,
[RoleId] ASC
) ON [PRIMARY]
) ON [PRIMARY]
これは、タイプのクエリ「列に行」一般的なように思える:凝集物および
case
を使用してSQL Server 2000でピボットを偽造。あなたは、メンバーシップをあまり重視せずに質問を再検討し、関連するテーブル定義を投稿することができます。多くのSQLに精通したユーザーの中には、その質問に答えることができます。 – Greg
おそらくあなたの権利。私は定義を追加しました。 – MAW74656