Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- CROSS APPLY
- CROSS APPLY
- SELECT distinct e.[Event Name],
- e.[Resource Type],
- LEFT(r.ResourceName , LEN(r.ResourceName)-1) ResourceName
- FROM yourtable e
- CROSS APPLY
- (
- SELECT r.[Resource Name] + ', '
- FROM yourtable r
- where e.[Event Name] = r.[Event Name]
- and e.[Resource Type] = r.[Resource Type]
- FOR XML PATH('')
- ) r (ResourceName)
- | EVENT NAME | RESOURCE TYPE | RESOURCENAME |
- ------------------------------------------------------------------------
- | Event 1 | Resource Type 1 | Resource 1, Resource 2 |
- | Event 1 | Resource Type 2 | Resource 3, Resource 4 |
- | Event 1 | Resource Type 3 | Resource 5, Resource 6, Resource 7 |
- | Event 1 | Resource Type 4 | Resource 8 |
- | Event 2 | Resource Type 2 | Resource 3 |
- | Event 2 | Resource Type 3 | Resource 11, Resource 12, Resource 13 |
- | Event 2 | Resource Type 4 | Resource 14 |
- | Event 2 | Resource Type 5 | Resource 1, Resource 9, Resource 16 |
- SELECT [Event Name],
- [Resource Type 1], [Resource Type 2],
- [Resource Type 3], [Resource Type 4],
- [Resource Type 5]
- FROM
- (
- SELECT distinct e.[Event Name],
- e.[Resource Type],
- LEFT(r.ResourceName , LEN(r.ResourceName)-1) ResourceName
- FROM yourtable e
- CROSS APPLY
- (
- SELECT r.[Resource Name] + ', '
- FROM yourtable r
- where e.[Event Name] = r.[Event Name]
- and e.[Resource Type] = r.[Resource Type]
- FOR XML PATH('')
- ) r (ResourceName)
- ) src
- pivot
- (
- max(ResourceName)
- for [Resource Type] in ([Resource Type 1], [Resource Type 2],
- [Resource Type 3], [Resource Type 4],
- [Resource Type 5])
- ) piv
- | EVENT NAME | RESOURCE TYPE 1 | RESOURCE TYPE 2 | RESOURCE TYPE 3 | RESOURCE TYPE 4 | RESOURCE TYPE 5 |
- ----------------------------------------------------------------------------------------------------------------------------------------------------------------
- | Event 1 | Resource 1, Resource 2 | Resource 3, Resource 4 | Resource 5, Resource 6, Resource 7 | Resource 8 | (null) |
- | Event 2 | (null) | Resource 3 | Resource 11, Resource 12, Resource 13 | Resource 14 | Resource 1, Resource 9, Resource 16 |
- IF OBJECT_ID('tempdb..#test') IS NOT NULL
- DROP TABLE #test
- GO
- CREATE TABLE #test
- (
- eventName VARCHAR(30),
- resourceType VARCHAR(30),
- resourceName VARCHAR(30)
- );
- INSERT INTO #test
- VALUES ('Event 1','Resource Type 1','Resource 1'),
- ('Event 1','Resource Type 1','Resource 2'),
- ('Event 1','Resource Type 2','Resource 3'),
- ('Event 1','Resource Type 2','Resource 4'),
- ('Event 1','Resource Type 3','Resource 5'),
- ('Event 1','Resource Type 3','Resource 6'),
- ('Event 1','Resource Type 3','Resource 7'),
- ('Event 1','Resource Type 4','Resource 8'),
- ('Event 2','Resource Type 5','Resource 1'),
- ('Event 2','Resource Type 2','Resource 3'),
- ('Event 2','Resource Type 3','Resource 11'),
- ('Event 2','Resource Type 3','Resource 12'),
- ('Event 2','Resource Type 3','Resource 13'),
- ('Event 2','Resource Type 4','Resource 14'),
- ('Event 2','Resource Type 5','Resource 9'),
- ('Event 2','Resource Type 5','Resource 16');
- DECLARE @resourceTypes VARCHAR(max);
- SELECT @resourceTypes = stuff((SELECT DISTINCT ',[' + resourceType + ']'
- FROM #test
- FOR xml path('')), 1, 1, '');
- DECLARE @query NVARCHAR(max);
- SET @query = 'SELECT *
- FROM (SELECT eventName,
- resourceType,
- stuff((SELECT '','' + resourceName + ''''
- FROM #test b
- WHERE a.eventName = b.eventName
- AND a.resourceType = b.resourceType
- FOR xml path('''')), 1, 1, '''') resourceName
- FROM #test a
- GROUP BY eventName,
- resourceType) AS data PIVOT (max(resourceName) FOR resourceType IN (' + @resourceTypes + ')) AS pvt';
- EXEC(@query);
- DROP TABLE #test;
- =Join( LookupSet( Fields!EVENT_NAME.Value + Fields!RESOURCE_TYPE.Value,
- Fields!EVENT_NAME.Value + Fields!RESOURCE_TYPE.Value,
- Fields!RESOURCE_NAME.Value, "DataSet1"), ", ")
- SET NOCOUNT ON
- GO
- DECLARE @SourceTable TABLE
- (
- EventName NVARCHAR(10)
- ,ResourceType NVARCHAR(20)
- ,ResourceName NVARCHAR(20)
- )
- INSERT INTO @SourceTable(EventName,ResourceType,ResourceName)
- VALUES ('Event 1','Resource Type 1','Resource 1')
- ,('Event 1','Resource Type 1','Resource 2')
- ,('Event 1','Resource Type 2','Resource 3')
- ,('Event 1','Resource Type 2','Resource 4')
- ,('Event 1','Resource Type 3','Resource 5')
- ,('Event 1','Resource Type 3','Resource 6')
- ,('Event 1','Resource Type 3','Resource 7')
- ,('Event 1','Resource Type 4','Resource 8')
- ,('Event 2','Resource Type 5','Resource 1')
- ,('Event 2','Resource Type 2','Resource 3')
- ,('Event 2','Resource Type 3','Resource 11')
- ,('Event 2','Resource Type 3','Resource 12')
- ,('Event 2','Resource Type 3','Resource 13')
- ,('Event 2','Resource Type 4','Resource 14')
- ,('Event 2','Resource Type 5','Resource 9')
- ,('Event 2','Resource Type 5','Resource 16')
- ;WITH SourceTable AS
- (
- SELECT DISTINCT ST1.EventName
- ,ST1.ResourceType
- ,(SELECT SUBSTRING((SELECT ',' +ResourceName
- FROM @SourceTable AS ST2
- WHERE ST1.EventName=ST2.EventName AND ST1.ResourceType=ST2.ResourceType
- FOR XML PATH('')),2,200) AS CSV) AS ResourceName
- FROM @SourceTable AS ST1
- )
- SELECT EventName
- ,[Resource Type 1]
- ,[Resource Type 2]
- ,[Resource Type 3]
- ,[Resource Type 4]
- ,[Resource Type 5]
- FROM
- (
- SELECT EventName
- ,ResourceType
- ,ResourceName
- FROM SourceTable
- ) PivotSource
- PIVOT
- (
- MAX(ResourceName) FOR ResourceType IN ([Resource Type 1],[Resource Type 2],[Resource Type 3],[Resource Type 4],[Resource Type 5])
- ) PivotTable
- SET NOCOUNT OFF
- GO
- id displayname Group
- -------------------------------------
- d-5454-s34 name Frans
- d-5454-s34 sd xyh
- d-5454-s34 description Group zen
- d-5454-s34 member xxxx
- d-5454-s34 member yyyy
- d-5454-s34 member zzzzz
- d-5454-s34 member uuuuu
- d-5454-s45 name He-man
- d-5454-s45 sd ygh
- d-5454-s45 description Group Comics
- d-5454-s45 member eeee
- d-5454-s45 member ffffff
- e-3434-t45 name Calvin
- e-3434-t45 sd trdg
- id name sd description member
- ---------------------------------------------------------------------------
- d-5454-s34 Frans xyh Group zen xxxx; yyyy; zzzzz; uuuuu
- d-5454-s45 He-man ygh Group Comics eeee; ffffff
- e-3434-t45 Calvin trdg NULL NULL
- SELECT distinct a.id, a.displayname, LEFT(r.[Description] , LEN(r.[Description])-1) [Description]
- FROM [tdt_AD_Teste] a
- CROSS APPLY
- (
- SELECT r.[description] + '; '
- FROM [tdt_AD_Teste] r
- where a.[id] = r.[id]
- and a.[displayname] = r.[displayname]
- FOR XML PATH('')
- ) r ([Description])
- id name sd description member
- ---------------------------------------------------------------------------
- d-5454-s34 Frans xyh Group zen xxxx; xxxx; xxxx; xxxx (and it keeps to repeat)
- d-5454-s45 He-man ygh Group Comics eeee; eeee; eeee; eeee; (and it keeps to repeat)
- e-3434-t45 Calvin trdg ;;;;;;;;;;; ;;;;;;;;;;;;;;;;; (and it keeps to repeat)
Add Comment
Please, Sign In to add comment