We have a data model which is similar to EAV. But, we are having limited set of attributes. In our data model, We are storing different Activities done by an individual and based on the activity type, the attributes will be varying.
We want to get the Activities and corresponding attribute/values for an individual. I have depicted the Activity
, ActivityDetails
table and the expected result set.
Can you please guide me in how to arrive at the expected result set from the data model ? We have to do some kind of pivoting. But, not sure on arriving at the same.
In the below example data, ClickURL is an Activity. It is having three attributes: URLAddress,ClickCount,ClickDate. The values corresponding to three attributes are : www.companyurl.com,10,20140101
The resultset should be like below:
ActivityName | Description | URLAddress | ClickCount | ClickDate
-------------------------------------------------------------------------------------------
ClickURL | Click advertisementURL | www.companyurl.com |10 |20140101
Our Data model & Expected Result
Sample Query with Data
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