我什至接近这个?
我正在尝试列出所有包含“Ape”的记录......以及在任何“Ape”记录之前 x 天出现的所有记录。我想我需要一个自连接表?
-- Doesn't work:
SELECT tblA.MyDate, tblA.MyPet FROM TestTable As tblA WHERE tblA.MyPet='Ape'
UNION
SELECT tblA.MyDate, tblA.MyPet FROM TestTable AS tblA, TestTable AS tblB WHERE tblA.MyPet='Ape' AND tblA.MyDate>tblB.MyDate-0.5 AND tblA.MyDate<tblB.MyDate
ORDER BY tblA.MyDate ASC
-- Doesn't work:
SELECT * FROM TestTable As tblA INNER JOIN TestTable As tblB ON tblA.MyPet = 'Ape' AND tblA.MyDate>tblB.MyDate-1 AND tblA.MyKey>tblB.MyKey
-- Doesn't work:
SELECT * FROM TestTable WHERE MyDate IN (SELECT MyDate-1 FROM TestTable WHERE MyPet='Ape')
-- Doesn't work
SELECT id, uid, date FROM orders current
WHERE EXISTS
(
SELECT * from orders future
WHERE future.date < DateAdd(DAYS, 1, current.date)
AND future.date > getdate()
AND future.uid = current.uid
)
-- Doesn't work
SELECT * FROM TestTable AS tblA
WHERE EXISTS
(
SELECT * FROM TestTable AS tblB
WHERE tblB < DateAdd(DAYS, 1, tblA.MyDate)
AND tblB.MYDate > GetDate()
AND tblA.MyKey = tblB.MyKey
)
============================ 以下是表格:
CREATE TABLE TestTable
(
MyKey Int IDENTITY(1,1) PRIMARY KEY,
MyDate DateTime NOT NULL DEFAULT GetDate(),
MyPet VarChar(22) NOT NULL DEFAULT ''
)
INSERT INTO TestTable(MyDate, MyPet) VALUES('01-Dec-2012 06:12:10', 'Cat' )
INSERT INTO TestTable(MyDate, MyPet) VALUES('01-Dec-2012 10:11:10', 'Dog' )
INSERT INTO TestTable(MyDate, MyPet) VALUES('01-Dec-2012 14:13:10', 'Fish' )
INSERT INTO TestTable(MyDate, MyPet) VALUES('01-Dec-2012 16:14:10', 'Duck' )
INSERT INTO TestTable(MyDate, MyPet) VALUES('01-Dec-2012 17:15:10', 'Bird' )
INSERT INTO TestTable(MyDate, MyPet) VALUES('01-Dec-2012 20:16:10', 'Kitten')
INSERT INTO TestTable(MyDate, MyPet) VALUES('02-Dec-2012 01:17:10', 'Dog' )
INSERT INTO TestTable(MyDate, MyPet) VALUES('02-Dec-2012 12:19:10', 'Fish' )
INSERT INTO TestTable(MyDate, MyPet) VALUES('02-Dec-2012 13:20:10', 'Duck' )
INSERT INTO TestTable(MyDate, MyPet) VALUES('02-Dec-2012 14:21:10', 'Bird' )
INSERT INTO TestTable(MyDate, MyPet) VALUES('02-Dec-2012 16:18:10', 'Cat' ) -- These are within 1 day before any "Ape" record
INSERT INTO TestTable(MyDate, MyPet) VALUES('03-Dec-2012 05:26:10', 'Dog' ) --
INSERT INTO TestTable(MyDate, MyPet) VALUES('03-Dec-2012 11:22:10', 'Kitten') --
INSERT INTO TestTable(MyDate, MyPet) VALUES('03-Dec-2012 12:23:10', 'Duck' ) --
INSERT INTO TestTable(MyDate, MyPet) VALUES('03-Dec-2012 13:24:10', 'Bird' ) --
INSERT INTO TestTable(MyDate, MyPet) VALUES('03-Dec-2012 14:25:10', 'Ape' ) -- An "Ape" record
INSERT INTO TestTable(MyDate, MyPet) VALUES('03-Dec-2012 16:27:10', 'Cat' )
INSERT INTO TestTable(MyDate, MyPet) VALUES('04-Dec-2012 01:32:10', 'Dog' )
INSERT INTO TestTable(MyDate, MyPet) VALUES('04-Dec-2012 04:28:10', 'Fish' )
INSERT INTO TestTable(MyDate, MyPet) VALUES('04-Dec-2012 07:30:10', 'Bird' )
INSERT INTO TestTable(MyDate, MyPet) VALUES('04-Dec-2012 10:31:10', 'Kitten')
INSERT INTO TestTable(MyDate, MyPet) VALUES('04-Dec-2012 16:29:10', 'Duck' )
INSERT INTO TestTable(MyDate, MyPet) VALUES('05-Dec-2012 11:35:10', 'Kitten')
INSERT INTO TestTable(MyDate, MyPet) VALUES('05-Dec-2012 12:36:10', 'Duck' )
INSERT INTO TestTable(MyDate, MyPet) VALUES('05-Dec-2012 13:33:10', 'Duck' )
INSERT INTO TestTable(MyDate, MyPet) VALUES('05-Dec-2012 13:37:10', 'Bird' )
INSERT INTO TestTable(MyDate, MyPet) VALUES('05-Dec-2012 14:34:10', 'Dog' )
INSERT INTO TestTable(MyDate, MyPet) VALUES('06-Dec-2012 04:41:10', 'Fish' ) -- These are within 1 day before any "Ape" record
INSERT INTO TestTable(MyDate, MyPet) VALUES('06-Dec-2012 05:39:10', 'Dog' ) --
INSERT INTO TestTable(MyDate, MyPet) VALUES('06-Dec-2012 14:38:10', 'Kitten') --
INSERT INTO TestTable(MyDate, MyPet) VALUES('06-Dec-2012 16:40:10', 'Ape' ) -- An "Ape" record
INSERT INTO TestTable(MyDate, MyPet) VALUES('06-Dec-2012 16:42:10', 'Duck' )