EAVに似たデータモデルがあります。ただし、属性のセットは限られています。私たちのデータモデルでは、個人が行ったさまざまなアクティビティを保存しており、アクティビティの種類に基づいて属性が異なります。
個人のアクティビティと対応する属性/値を取得したいと考えています。Activity
、ActivityDetails
テーブル、および予想される結果セットを示しました。
データモデルから期待される結果セットに到達する方法を教えてください。ある種のピボットを行う必要があります。しかし、同じに到着するかどうかはわかりません。
以下のサンプル データでは、ClickURLがアクティビティです。URLAddress、ClickCount、ClickDateの3 つの属性があります。3 つの属性に対応する値は、 www.companyurl.com、10、20140101 です。
結果セットは次のようになります。
ActivityName | Description | URLAddress | ClickCount | ClickDate
-------------------------------------------------------------------------------------------
ClickURL | Click advertisementURL | www.companyurl.com |10 |20140101
データを使用したサンプル クエリ
CREATE TABLE [dbo].[Activity](
[ActivityTypeID] [int] IDENTITY(1,1) NOT NULL,
[ActivityName] VARCHAR(50) NULL,
[Description] VARCHAR(255) NULL,
[StringField1] [varchar](50) NULL,
[StringField2] [varchar](50) NULL,
[StringField3] [varchar](50) NULL,
[NumField1] [varchar](50) NULL,
[NumField2] [varchar](50) NULL,
[DTTMField1] [varchar](50) NULL,
[DTTMField2] [varchar](50) NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[ActivityDetails](
[ActivityDetailID] [int] IDENTITY(1,1) NOT NULL,
[ActivityTypeID] VARCHAR(50) NULL,
[StringField1] [varchar](50) NULL,
[StringField2] [varchar](50) NULL,
[StringField3] [varchar](50) NULL,
[NumField1] [] NULL,
[NumField2] [int] NULL,
[DTTMField1] [datetime] NULL,
[DTTMField2] [datetime] NULL
) ON [PRIMARY]
GO
INSERT INTO [dbo].[Activity](
[ActivityName]
,[Description]
,[StringField1]
,[StringField2]
,[StringField3]
,[NumField1]
,[NumField2]
,[DTTMField1]
,[DTTMField2]
)
VALUES
('ClickURL','Click advertisementURL','URLAddress',NULL,NULL,'ClickCount',NULL,'clickDate',NULL)
GO
INSERT INTO [dbo].[ActivityDetails](
[ActivityTypeID]
,[StringField1]
,[StringField2]
,[StringField3]
,[NumField1]
,[NumField2]
,[DTTMField1]
,[DTTMField2]
)
VALUES
(1,'www.companyurl.com',NULL,NULL,10,NULL,'20140101',NULL)
GO