I didn't understand you problem exactly but i will give a code of Dynamic Pivoting..
CREATE TABLE [dbo].[UserDetail](
[PK_User] [bigint] NOT NULL,
[FK_Property] [int] NOT NULL,
[PropValue] [varchar](100) NOT NULL
) ON [PRIMARY]
GO
INSERT [dbo].[UserDetail] ([PK_User], [FK_Property], [PropValue]) VALUES (1, 1, N'Jitendra')
INSERT [dbo].[UserDetail] ([PK_User], [FK_Property], [PropValue]) VALUES (1, 2, N'Garg')
INSERT [dbo].[UserDetail] ([PK_User], [FK_Property], [PropValue]) VALUES (2, 1, N'Praveen')
INSERT [dbo].[UserDetail] ([PK_User], [FK_Property], [PropValue]) VALUES (2, 2, N'Mehta')
INSERT [dbo].[UserDetail] ([PK_User], [FK_Property], [PropValue]) VALUES (2, 3, N'Udaipur')
GO
ALTER PROCEDURE [dbo].[usp_Pivot]
(
@UserId As INT
)
As
DECLARE @Query As VARCHAR(MAX)
DECLARE @StrColumn As VARCHAR(MAX) = ''
SELECT @StrColumn = CASE @StrColumn WHEN '' THEN '' ELSE @StrColumn + ',' END+ 'ISNULL(['+ CAST(FK_Property AS VARCHAR(10)) +'],'''') AS Col' + CAST(FK_Property AS VARCHAR(10)) FROM dbo.UserDetail(NoLock) WHERE PK_User = @UserId
DECLARE @StrIn As VARCHAR(MAX) = ''
SELECT @StrIn = CASE @StrIn WHEN '' THEN '' ELSE @StrIn + ',' END+ '['+ CAST(FK_Property AS VARCHAR(10)) +']' FROM dbo.UserDetail(NoLock) WHERE PK_User = @UserId
SET @Query =
'SELECT * FROM
(
SELECT
PK_User As UserId,
'+ @StrColumn +'
FROM
(
SELECT
PK_User,FK_Property,PropValue
FROM dbo.UserDetail(NoLock) WHERE PK_User = ' + CAST(@UserId AS VARCHAR(10)) + '
) p
PIVOT
(
MAX (PropValue)
FOR FK_Property IN ('+ @StrIn +')
) AS pvt
)X'
PRINT @Query
EXEC (@Query)
GO
I hope this code will helps a lot to you for making your concept by using your logic....
Gaurav Agrawal
http://www.planetofcoders.com/
Jayakumars, if this helps please login to Mark As Answer. | Alert Moderator