| Author |
Topic |
|
SMerrill
Posting Yak Master
206 Posts |
Posted - 2010-01-06 : 15:29:05
|
Kudos to anyone who can do this mess in fewer steps . . . DECLARE @EventName_A NVARCHAR(100)DECLARE @EventName_B NVARCHAR(100)SELECT @EventName_A = 'Non-Foul' , @EventName_B = '2nd Base'DECLARE @ClosedEvents TABLE ( HistoryID INT , Player NVARCHAR(14) , EventType NVARCHAR(100) , FirstEvent BIT , LastEvent BIT, Event_A BIT, Event_B BIT )INSERT INTO @ClosedEventsVALUES ( 1, 'JONES', 'Foul One', 0, 0 , 0, 0 )INSERT INTO @ClosedEventsVALUES ( 2, 'JONES', 'Non-Foul', 0, 0 , 0, 0 ) INSERT INTO @ClosedEventsVALUES ( 3, 'JONES', '1st Base', 0, 0 , 0, 0 )INSERT INTO @ClosedEventsVALUES ( 4, 'SMITH', 'Non-Foul', 0, 0 , 0, 0 )INSERT INTO @ClosedEventsVALUES ( 5, 'JONES', '2nd Base', 0, 0 , 0, 0 )INSERT INTO @ClosedEventsVALUES ( 6, 'SMITH', '1st Base', 0, 0 , 0, 0 )INSERT INTO @ClosedEventsVALUES ( 7, 'MAY', 'Non-Foul', 0, 0 , 0, 0 )INSERT INTO @ClosedEventsVALUES ( 8, 'MAY', '1st Base', 0, 0 , 0, 0 )INSERT INTO @ClosedEventsVALUES ( 9, 'SMITH', 'Out Two', 0, 0 , 0, 0 )INSERT INTO @ClosedEventsVALUES ( 10, 'JONES', '3rd Base', 0, 0 , 0, 0 )INSERT INTO @ClosedEventsVALUES ( 11, 'JAMES', 'Non-Foul', 0, 0 , 0, 0 )INSERT INTO @ClosedEventsVALUES ( 12, 'JAMES', '1st Base', 0, 0 , 0, 0 )INSERT INTO @ClosedEventsVALUES ( 13, 'JONES', 'Home Plate', 0, 0 , 0, 0 )INSERT INTO @ClosedEventsVALUES ( 14, 'JAMES', '2nd Base', 0, 0 , 0, 0 )INSERT INTO @ClosedEventsVALUES ( 15, 'SMITH', 'Out three', 0, 0 , 0, 0 ) IF OBJECT_ID('tempdb..#FirstAndLast') IS NOT NULL DROP TABLE #FirstAndLast SELECT Player , MIN(HistoryID) AS [FirstHist] , MAX(HistoryID) AS [LastHist]INTO #FirstAndLastFROM @ClosedEventsGROUP BY PlayerUPDATE CSET C.FirstEvent = ( CASE HistoryID WHEN FirstHist THEN 1 ELSE 0 END ) , C.LastEvent = ( CASE HistoryID WHEN LastHist THEN 1 ELSE 0 END ) , C.Event_A = (CASE EventType WHEN @EventName_A THEN 1 ELSE 0 END ) , C.Event_B = (CASE EventType WHEN @EventName_B THEN 1 ELSE 0 END )FROM @ClosedEvents C INNER JOIN #FirstAndLast F ON F.Player = C.PlayerSELECT HistoryID , Player , EventType , FirstEvent , LastEvent , Event_A , Event_BFROM @ClosedEvents~ Shaun MerrillSeattle area |
|
|
visakh16
Very Important crosS Applying yaK Herder
52326 Posts |
Posted - 2010-01-07 : 01:13:28
|
| [code]UPDATE CSET C.FirstEvent = C1.StartEvent ,C.LastEvent = C1.EndEvent, C.Event_A = C1.Event_A,C.Event_B = C1.Event_BFROM @ClosedEvents CINNER JOIN (SELECT Player, MIN(HistoryID) AS StartEvent,MAX(HistoryID) AS EndEvent, MAX(CASE WHEN EventType=@EventName_A THEN 1 ELSE 0 END) AS Event_A,MAX(CASE WHEN EventType=@EventName_B THEN 1 ELSE 0 END) AS Event_BFROM @ClosedEventsGROUP BY Player)C1ON C1.Player=C2.Player[/code] |
 |
|
|
|
|
|