|
harlingtonthewizard
Constraint Violating Yak Guru
352 Posts |
Posted - 2011-02-09 : 21:58:50
|
| I have the following procedure and I would like the rows that are for the same Event/Blog ID to have the Image and FileName2 data on the same row. The FileName2 field is 0000384105_1.jpg (10 digits_1.jpg, 10 digits_2.jpg, 10 digits_3.jpg) Some events may have only one image or NULL for Image and FileName2. So currently it looks like this:SiteID SiteName TransmitterType EventID/BlogID CameraNumber CameraName Description Cause SourceID SourceType LocalStartTime EventStartTime LocalEndTime EventEndTime Indicator ZoneNumber EventCode ZoneText DetectorText RID Media Format YearPath MonthPath DayPath EventExtraDataID FileName Type Format StartTime EndTime LoginName Comments CommentedTime EventCommentsID SessionDetailsSessionID Image FileName23 Bravo V3100 384104 7 Camera 7 Duress Alarm CAM07 EVENT 7 Cameras 2011-02-10 13:01:02 2011-02-10 12:58:59 2011-02-10 13:01:02 2011-02-10 12:58:59 Activate Z000 11224 SYSTEM CAM07 EVENT NULL NULL 2011 2 10 NULL No_Images.png NULL NULL NULL NULL NULL NULL NULL NULL 246737 0x89... No_Images.png3 Bravo V3100 384105 7 Camera 7 Duress Alarm CAM07 EVENT 7 Cameras 2011-02-10 13:01:02 2011-02-10 12:58:59 2011-02-10 13:01:02 2011-02-10 12:58:59 Activate Z000 11224 SYSTEM CAM07 EVENT NULL HYIMAGES 2011 2 10 567603 0000384105_1.jpg Image HYIMAGES 2011-02-10 12:58:59 2011-02-10 12:58:59 NULL NULL NULL NULL 246737 0xFF... 0000384105_1.jpg3 Bravo V3100 384105 7 Camera 7 Duress Alarm CAM07 EVENT 7 Cameras 2011-02-10 13:01:02 2011-02-10 12:58:59 2011-02-10 13:01:02 2011-02-10 12:58:59 Activate Z000 11224 SYSTEM CAM07 EVENT NULL HYIMAGES 2011 2 10 567604 0000384105_2.jpg Image HYIMAGES 2011-02-10 12:59:00 2011-02-10 12:59:00 NULL NULL NULL NULL 246737 0xFF... 0000384105_2.jpg3 Bravo V3100 384105 7 Camera 7 Duress Alarm CAM07 EVENT 7 Cameras 2011-02-10 13:01:02 2011-02-10 12:58:59 2011-02-10 13:01:02 2011-02-10 12:58:59 Activate Z000 11224 SYSTEM CAM07 EVENT NULL HYIMAGES 2011 2 10 567605 0000384105_3.jpg Image HYIMAGES 2011-02-10 12:59:00 2011-02-10 12:59:00 NULL NULL NULL NULL 246737 0xFF... 0000384105_3.jpgNULL NULL NULL 5 NULL NULL USER NOTE USER NOTE 5 User 2011-02-09 12:41:28 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL a un9/02/2011 12:41 PM 2011-02-09 12:41:28 NULL NULL NULL NULL..and I need this:SiteID SiteName TransmitterType EventID/BlogID CameraNumber CameraName Description Cause SourceID SourceType LocalStartTime EventStartTime LocalEndTime EventEndTime Indicator ZoneNumber EventCode ZoneText DetectorText RID Media Format YearPath MonthPath DayPath EventExtraDataID FileName Type Format StartTime EndTime LoginName Comments CommentedTime EventCommentsID SessionDetailsSessionID Image1 FileName1 Image2 FileName2 Image3 FileName33 Bravo V3100 384104 7 Camera 7 Duress Alarm CAM07 EVENT 7 Cameras 2011-02-10 13:01:02 2011-02-10 12:58:59 2011-02-10 13:01:02 2011-02-10 12:58:59 Activate Z000 11224 SYSTEM CAM07 EVENT NULL NULL 2011 2 10 NULL No_Images.png NULL NULL NULL NULL NULL NULL NULL NULL 246737 0x89... No_Images.png NULL NULL NULL NULL3 Bravo V3100 384105 7 Camera 7 Duress Alarm CAM07 EVENT 7 Cameras 2011-02-10 13:01:02 2011-02-10 12:58:59 2011-02-10 13:01:02 2011-02-10 12:58:59 Activate Z000 11224 SYSTEM CAM07 EVENT NULL HYIMAGES 2011 2 10 567603 0000384105_1.jpg Image HYIMAGES 2011-02-10 12:58:59 2011-02-10 12:58:59 NULL NULL NULL NULL 246737 0xFF... 0000384105_1.jpg 0xFF... 0000384105_2.jpg 0xFF... 0000384105_3.jpgNULL NULL NULL 5 NULL NULL USER NOTE USER NOTE 5 User 2011-02-09 12:41:28 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL a un9/02/2011 12:41 PM 2011-02-09 12:41:28 NULL NULL NULL NULL NULL NULL NULL NULLUSE [VC]GO/****** Object: StoredProcedure [dbo].[Site_Report] Script Date: 02/10/2011 12:59:55 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGO-- =============================================-- Author: Steve Harlington-- Create date: <Create Date,,>-- Description: <Description,,>-- =============================================ALTER PROCEDURE [dbo].[Site_Report]@SiteID nvarchar(max),--@EventID nvarchar(max),@DateRange nvarchar(30),@DBName nvarchar(max)ASSET NOCOUNT ONDeclare @File As nvarchar(255)Declare @Path As nvarchar(255)Declare @EventID1 As intDeclare @EventExtraDataID As intDeclare @NoImage As nvarchar(255)Declare @StartDateRange As DateTimeDeclare @EndDateRange As DateTimeSET @NoImage = (SELECT EntryValue + '\VCPRS\No_Images.png' FROM (SELECT EntryValue FROM VCSystemData WHERE EntryName = 'VCPDataRootPath') as t)--Print @NoImageSET @StartDateRange = (Select StartDateRange From fn_DateSel (@DateRange))SET @EndDateRange = (Select EndDateRange From fn_DateSel (@DateRange))Declare @sql1 nvarchar(max)Declare @ParamDefinition1 AS nvarchar(max)Select @sql1=''Select @sql1=@sql1+ 'Select EventDetails.EventID, EventExtraDataID, ISNULL(EntryValue + ''\EventExtraData\'' + CAST(SiteID As nvarchar(3)) + ''\'' + CAST(DATEPART(yyyy, EventStartTime) As nvarchar(4)) + ''\'' + CAST(DATEPART(mm, EventStartTime)As nvarchar(2)) + ''\'' + CAST(DATEPART(dd, EventStartTime)As nvarchar(2)) + ''\'' + FileName, ''' +@NoImage+ ''') As [Path], ISNULL(FileName, ''No_Images.png'') As [FileName]FROM '+name+'.dbo.EventDetails LEFT JOIN'+name+'.dbo.EventExtraData ON '+name+'.dbo.EventDetails.EventID = '+name+'.dbo.EventExtraData.EventID LEFT JOIN'+name+'.dbo.VCSystemData ON '+name+'.dbo.VCSystemData.EntryName = ''VCPDataRootPath''WHERE EventDetails.LocalStartTime >= @StartDateRange AND EventDetails.LocalStartTime <= @EndDateRangeAND EventDetails.SiteID IN (Select Param From fn_MVParam ('''+@SiteID+''','',''))AND '''+name+''' IN (Select Param From fn_MVParam ('''+@DBName+''','','')) ' from sys.databases where name='VC' or name like 'VCA%' Set @ParamDefinition1 = ' @SiteID nvarchar (50), @DBName nvarchar (100), @StartDateRange DateTime, @EndDateRange DateTime' CREATE TABLE #i (ID int IDENTITY(1,1) NOT NULL, [EventID] int, [EventExtraDataID] int, [Path] nvarchar(255), [FileName] nvarchar(max))INSERT INTO #i ([EventID], [EventExtraDataID], [Path], [FileName])Execute sp_Executesql @sql1, @ParamDefinition1, @SiteID, @DBName, @StartDateRange, @EndDateRange--Print (@sql1)--Select * from #i--Order by EventIDCREATE TABLE #ib (ID int IDENTITY(1,1) NOT NULL, [FileName] nvarchar(255) NOT NULL, [Image] varbinary(max), [EventID] int, [EventExtraDataID] int)DECLARE insert_cursor CURSOR FAST_FORWARD FORSelect [EventID], [EventExtraDataID], [Path], [FileName] from #iOPEN insert_cursorFETCH NEXT FROM insert_cursorINTO @EventID1, @EventExtraDataID, @Path, @FileWHILE @@FETCH_STATUS = 0 BEGIN --Print @Path --Print @File EXEC('INSERT INTO #ib ([EventID], [EventExtraDataID], [FileName], [Image]) SELECT ''' + @EventID1 + ''', ''' + @EventExtraDataID + ''', ''' + @File + ''', * FROM ( SELECT * FROM OPENROWSET(BULK ''' + @Path + ''', SINGLE_BLOB) As rs) As im') FETCH NEXT FROM insert_cursor INTO @EventID1, @EventExtraDataID, @Path, @File ENDCLOSE insert_cursorDEALLOCATE insert_cursor--Select * from #ib--Order by EventIDDeclare @sql2 AS nvarchar (max)Declare @ParamDefinition2 AS nvarchar(max)SELECT @sql2=''SELECT @sql2=@sql2+ 'SELECT SiteID, NULL, NULL, SiteName, BlogID, SourceID, SourceType, EntryDate, EntryValue, ''SITE NOTE''FROM '+name+'.dbo.SiteDetails INNER JOIN'+name+'.dbo.Blog ON '+name+'.dbo.SiteDetails.SiteID = '+name+'.dbo.Blog.SourceIDWHERE Blog.EntryDate >= @StartDateRange AND Blog.EntryDate <= @EndDateRangeAND SiteDetails.SiteID IN (Select Param From fn_MVParam ('''+@SiteID+''','',''))AND IsDeleted = ''False''AND SourceType = ''Site''Union ALLSELECT NULL, UserID, LoginName, NULL, BlogID, SourceID, SourceType, EntryDate, EntryValue, ''USER NOTE''FROM '+name+'.dbo.UserDetails INNER JOIN'+name+'.dbo.Blog ON '+name+'.dbo.UserDetails.UserID = '+name+'.dbo.Blog.SourceIDWHERE Blog.EntryDate >= @StartDateRange AND Blog.EntryDate <= @EndDateRangeAND IsDeleted = ''False''AND SourceType = ''User'' ' from sys.databases where name='VC' or name like 'VCA%' Set @ParamDefinition2 = ' @SiteID nvarchar (50), @DBName nvarchar (100),@StartDateRange DateTime,@EndDateRange DateTime'Create table #b([SiteID] int, [UserID] int,[LoginName] nvarchar(50), [SiteName] nvarchar(50), [BlogID] int, [SourceID] int, [SourceType] nvarchar(50), [EntryDate] DateTime, [EntryValue] nvarchar(max), [NoteType] nvarchar (50))Insert into #bExecute sp_Executesql @sql2, @ParamDefinition2, @SiteID, @DBName, @StartDateRange, @EndDateRange---Print @sqlDeclare @sql As nvarchar(max)Declare @ParamDefinition AS nvarchar(max)Select @sql=''Select @sql=@sql+ 'SELECT DISTINCT SiteDetails.SiteID, SiteDetails.SiteName, SiteDetails.TransmitterType, EventDetails.EventID, EventDetails.CameraNumber + 1, EventDetails.CameraName, EventDetails.Description, EventDetails.Cause, ISNULL(EventDetails.SourceID, ''0'') As SourceID, EventDetails.SourceType, EventDetails.LocalStartTime, EventDetails.EventStartTime, EventDetails.LocalEndTime, EventDetails.EventEndTime, EventDetails.Indicator, EventDetails.ZoneNumber, EventDetails.EventCode, EventDetails.ZoneText, EventDetails.DetectorText, EventDetails.RID, EventExtraData.Format, DATEPART(yyyy, EventStartTime) AS YearPath, DATEPART(mm, EventStartTime) AS MonthPath, DATEPART(dd, EventStartTime) AS DayPath, EventExtraData.EventExtraDataID, ISNULL(EventExtraData.FileName, ''No_Images.png'') As FileName, EventExtraData.Type, EventExtraData.Format,EventExtraData.StartTime,EventExtraData.EndTime, UserDetails.LoginName, EventComments.Comments ,EventComments.CommentedTime, EventComments.EventCommentsID, SessionDetails.SessionIDFROM '+name+'.dbo.EventDetails INNER JOIN'+name+'.dbo.SiteDetails ON '+name+'.dbo.EventDetails.SiteID = '+name+'.dbo.SiteDetails.SiteID LEFT JOIN'+name+'.dbo.EventExtraData ON '+name+'.dbo.EventDetails.EventID = '+name+'.dbo.EventExtraData.EventID LEFT JOIN'+name+'.dbo.EventComments ON '+name+'.dbo.EventComments.EventID = '+name+'.dbo.EventDetails.EventID LEFT JOIN'+name+'.dbo.SessionDetails ON '+name+'.dbo.SessionDetails.SessionID = '+name+'.dbo.EventDetails.SessionID LEFT JOIN'+name+'.dbo.OperatorAction ON '+name+'.dbo.OperatorAction.SessionID = '+name+'.dbo.SessionDetails.SessionID LEFT JOIN'+name+'.dbo.UserDetails ON '+name+'.dbo.UserDetails.UserID = '+name+'.dbo.EventComments.UserID OR '+name+'.dbo.OperatorAction.UserID = '+name+'.dbo.UserDetails.UserIDWHERE ((EventDetails.LocalStartTime >= @StartDateRange) AND (EventDetails.LocalStartTime <= @EndDateRange))AND EventDetails.SiteID IN (Select Param From fn_MVParam ('''+@SiteID+''','',''))AND '''+name+''' IN (Select Param From fn_MVParam ('''+@DBName+''','','')) ' from sys.databases where name='VC' or name like 'VCA%' --EventDetails.EventID IN (Select Param From fn_MVParam ('''+@EventID+''','',''))Set @ParamDefinition = ' @SiteID nvarchar (50), @DBName nvarchar (100), @StartDateRange DateTime, @EndDateRange DateTime' Create table #t([SiteID] int, [SiteName] nvarchar(50), [TransmitterType] nvarchar(50), [EventID] int, [CameraNumber] int, [CameraName] nvarchar(max), [Description] nvarchar(max), [Cause] nvarchar(max), [SourceID] int, [SourceType] nvarchar(max), [LocalStartTime] DateTime, [EventStartTime] DateTime, [LocalEndTime] DateTime, [EventEndTime] DateTime, [Indicator] nvarchar(max), [ZoneNumber] nchar(4), [EventCode] int, [ZoneText] nchar(20), [DetectorText] nchar(20), [RID] nchar(16), [Media Format] nvarchar (50), [YearPath] nvarchar(4), [MonthPath] nvarchar(2), [DayPath] nvarchar(2), [EventExtraDataID] int, [FileName] nvarchar(200),[Type] nvarchar(50),[Format] nvarchar(50),[StartTime] DateTime,[EndTime] DateTime, [LoginName] nvarchar (50), [Comments] nvarchar (max), [CommentedTime] DateTime, [EventCommentsID] int, [SessionDetailsSessionID] int)Insert into #tExecute sp_Executesql @sql, @ParamDefinition, @SiteID, @DBName, @StartDateRange, @EndDateRangeSelect DISTINCT [SiteID], [SiteName], [TransmitterType], #t.EventID AS [EventID/BlogID], [CameraNumber], [CameraName], [Description], [Cause], [SourceID], dbo.SourceTypeConv ([SourceType]) As [SourceType], CONVERT(VARCHAR(19), [LocalStartTime], 120) AS [LocalStartTime], CONVERT(VARCHAR(19), [EventStartTime], 120) AS [EventStartTime], CONVERT(VARCHAR(19), [LocalEndTime], 120) AS [LocalEndTime], CONVERT(VARCHAR(19), [EventEndTime], 120) AS [EventEndTime], [Indicator], [ZoneNumber], [EventCode], [ZoneText], [DetectorText], [RID], [Media Format], [YearPath], [MonthPath], [DayPath], #t.EventExtraDataID, #t.FileName, [Type], [Format], CONVERT(VARCHAR(19), [StartTime], 120) AS [StartTime], CONVERT(VARCHAR(19), [EndTime], 120) AS [EndTime], [LoginName], [Comments], CONVERT(VARCHAR(19), [CommentedTime], 120) AS [CommentedTime], [EventCommentsID], [SessionDetailsSessionID], [Image], #ib.FileName As FileName2From #tLeft Join #ib ON #t.EventID = #ib.EventID AND #t.FileName = #ib.FileNameUnion ALLSelect [SiteID], [SiteName], NULL, [BlogID], NULL, NULL, [NoteType], [NoteType], SourceID, [SourceType], CONVERT(VARCHAR(19), EntryDate, 120) AS [EntryDate], NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, [LoginName], [EntryValue], CONVERT(VARCHAR(19), EntryDate, 120) AS [EntryDate], NULL, NULL, NULL, NULLFrom #bOrder BY LocalStartTime DescDrop Table #tDrop table #iDrop Table #ibDrop Table #bSET NOCOUNT OFFRETURN |
|