posts - 41,  comments - 40,  trackbacks - 0
          要查詢Begin與End字段都相同的記錄,出現(xiàn)次數(shù)在n次以上的結(jié)果集

          有一個(gè)數(shù)據(jù)庫(kù)表,結(jié)構(gòu)為:(3個(gè)字段)
          Begin?從?字符型
          End?到?字符型
          Time?時(shí)間?時(shí)間型

          數(shù)據(jù):
          Begin?End?Time
          111?222?2002-10-10
          111?333?2002-10-11
          111?444?2002-10-12
          111?222?2002-10-13
          111?222?2002-10-14
          111?333?2002-10-15
          222?111?2002-10-16
          222?333?2002-10-17
          222?555?2002-10-18
          444?222?2002-10-19
          444?222?2002-10-20
          666?222?2002-10-21

          要查詢Begin與End字段都相同的記錄,出現(xiàn)次數(shù)在n次以上的結(jié)果集

          n=2結(jié)果集為:
          Begin?End?Time
          111?222?2002-10-10
          111?333?2002-10-11
          111?222?2002-10-13
          111?222?2002-10-14
          111?333?2002-10-15
          444?222?2002-10-19
          444?222?2002-10-20

          n=3結(jié)果集為:
          Begin?End?Time
          111?222?2002-10-10
          111?222?2002-10-13
          111?222?2002-10-14

          不知這種情況的SQL語(yǔ)句如何寫?
          ---------------------------------------------------------------
          USE Northwind
          GO

          IF EXISTS( SELECT * FROM dbo.sysobjects WHERE id=object_id( N'[Flight]' ) AND OBJECTPROPERTY( id, N'IsUserTable' )=1 )
          DROP TABLE [Flight]
          GO

          CREATE TABLE [Flight]
          (
          ? [Begin] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL,
          ? [End] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL,
          ? [Time] [datetime] NULL
          ) ON [PRIMARY]
          GO

          INSERT INTO [Flight]( [Begin], [End], [Time] ) VALUES( '111', '222', '2002-10-10' )
          INSERT INTO [Flight]( [Begin], [End], [Time] ) VALUES( '111', '333', '2002-10-11' )
          INSERT INTO [Flight]( [Begin], [End], [Time] ) VALUES( '111', '444', '2002-10-12' )
          INSERT INTO [Flight]( [Begin], [End], [Time] ) VALUES( '111', '222', '2002-10-13' )
          INSERT INTO [Flight]( [Begin], [End], [Time] ) VALUES( '111', '222', '2002-10-14' )
          INSERT INTO [Flight]( [Begin], [End], [Time] ) VALUES( '111', '333', '2002-10-15' )
          INSERT INTO [Flight]( [Begin], [End], [Time] ) VALUES( '222', '111', '2002-10-16' )
          INSERT INTO [Flight]( [Begin], [End], [Time] ) VALUES( '222', '333', '2002-10-17' )
          INSERT INTO [Flight]( [Begin], [End], [Time] ) VALUES( '222', '555', '2002-10-18' )
          INSERT INTO [Flight]( [Begin], [End], [Time] ) VALUES( '444', '222', '2002-10-19' )
          INSERT INTO [Flight]( [Begin], [End], [Time] ) VALUES( '444', '222', '2002-10-20' )
          INSERT INTO [Flight]( [Begin], [End], [Time] ) VALUES( '666', '222', '2002-10-21' )
          GO

          SELECT * FROM [Flight]
          GO


          -- 方法一

          DECLARE @n int? -- 出現(xiàn)次數(shù)
          SET @n=2

          SELECT *
          FROM [Flight] T1
          WHERE ( SELECT COUNT(*)
          ??????? FROM [Flight] T2
          ??????? WHERE T2.[Begin]=T1.[Begin] AND T2.[End]=T1.[End] )>=@n
          ORDER BY T1.[Begin], T1.[End], T1.[Time]



          -- 方法二

          DECLARE @n int? -- 出現(xiàn)次數(shù)
          SET @n=2

          SELECT *
          FROM [Flight] T1
          WHERE EXISTS ( SELECT 1
          ?????????????? FROM ( SELECT [Begin], [End]
          ????????????????????? FROM [Flight]
          ????????????????????? GROUP BY [Begin], [End]
          ????????????????????? HAVING COUNT(*)>=@n ) T2
          ?????????????? WHERE T2.[Begin]=T1.[Begin] AND T2.[End]=T1.[End] )
          ORDER BY T1.[Begin], T1.[End], T1.[Time]
          posted on 2007-08-24 05:20 NeedJava 閱讀(1396) 評(píng)論(0)  編輯  收藏 所屬分類: SQL
          主站蜘蛛池模板: 抚州市| 黎平县| 永济市| 福建省| 海口市| 长汀县| 正镶白旗| 雷山县| 贵港市| 阿拉善左旗| 万源市| 鄂伦春自治旗| 景洪市| 大厂| 勃利县| 贵阳市| 静海县| 方山县| 启东市| 长治市| 阿拉善右旗| 定远县| 襄垣县| 彰化市| 许昌县| 临泉县| 阜城县| 云阳县| 延吉市| 麻江县| 鄢陵县| 博野县| 三明市| 昌宁县| 广丰县| 兴文县| 陇西县| 潞城市| 乐清市| 无为县| 无棣县|