Let's say I have a table which tells me when a certain thing was activated and deactivated:
CREATE TABLE [dbo].[active] 
( 
    [timestamp] [DATETIME] NOT NULL, 
    [activated] [BIT] NOT NULL 
) 
And my best attempt at making a query against this to retrieve the intervals for which the thing was active:
SELECT a.timestamp AS 'ActivatedDate', 
       Deactivated.timestamp 
FROM   active a 
       OUTER apply (SELECT Min(d.timestamp) AS TimeStamp 
                    FROM   active d 
                    WHERE  activated = 0 
                           AND d.timestamp > a.timestamp) AS Deactivated 
WHERE  a.activated = 1 
I need to rewrite this so that it will work with ANSI SQL, or at least both T-SQL and Oracle 9. It is my understanding that OUTER apply wont work for Oracle 9.
If there is a much better way to do this sort of thing, please share! :)
I need this to check if certain events were happening while this thing was enabled/disabled. Thanks!
 
                        
Use a correlated subquery:
This is ANSI SQL and it should work in SQL Server and Oracle (and almost all other databases).
Do note: there may be more efficient ways to do what you want in any given database.