Sql server SQL Server简单查询将表与自身连接起来

Sql server SQL Server简单查询将表与自身连接起来,sql-server,Sql Server,我有一张桌子,上面有过去玩过的游戏的数据。此查询的目的是查找在同一日期玩过的所有游戏,并打印日期、玩过的两支球队和结果。该表的设置如下所示: 游戏 首页|访客|日期|结果 ------------------- 孟加拉|布朗| 2012年1月1日|平局 布朗|孟加拉| 2012年1月1日|损失 巨人队|喷气机队| 4/2/2013 |获胜 巨人队|牛仔队| 4/2/2013 |亏损 熊|乌鸦| 5/3/2012 |领带 比尔|海豚| 2014年11月10日|获胜 ... 我认为解决方案是在类似这

我有一张桌子,上面有过去玩过的游戏的数据。此查询的目的是查找在同一日期玩过的所有游戏,并打印日期、玩过的两支球队和结果。该表的设置如下所示:

游戏

首页|访客|日期|结果 ------------------- 孟加拉|布朗| 2012年1月1日|平局 布朗|孟加拉| 2012年1月1日|损失 巨人队|喷气机队| 4/2/2013 |获胜 巨人队|牛仔队| 4/2/2013 |亏损 熊|乌鸦| 5/3/2012 |领带 比尔|海豚| 2014年11月10日|获胜 ... 我认为解决方案是在类似这样的查询中连接表

select 
    A.Date, A.Home, A.Visitors, A.Result
from 
    GAMES as A, GAMES as B
where 
    A.Date = B.Date 
    and A.Home = B.Visitors;
但是在这个特定的查询中,它将只返回一个游戏首先,总共有6个游戏应该显示,并且只返回表A中的值。有没有一种方法可以让我编写查询以便它一次查找所有游戏,而不是定制一个特定的查询来查找每个游戏?谢谢

预期结果的形式如下:

1 2012-1-1 Bengals Browns Tie
2 2012-1-1 Browns Bengals Loss
3 2013-4-2 Giants Jets Win
4 2013-4-2 Giants Cowboys Loss
etc. 

好吧,听起来你想做的是找到多个游戏发生的日期。那么

SELECT a.Date, count(*) as CountOfDate
FROM GAMES a
GROUP BY a.Date
HAVING count(*) > 1

像这样的怎么样

SELECT
    A.Date, A.Home, A.Visitors, A.Result
FROM 
    GAMES as A
WHERE EXISTS (SELECT * 
              FROM GAMES as B 
              WHERE A.DATE = B.DATE 
                AND (A.Home <> B.Home 
                OR   A.Visitors <> B.Visitors))
ORDER by A.Date ASC

你能发一份你想要的结果样本吗?您的示例数据非常混乱。我对其进行了编辑,以包含以下内容:如果您的输出与现有数据集完全相同,则只需按日期排序…-20多年前,在ANSI-92 SQL标准中,旧样式的逗号分隔表列表样式被正确的ANSI连接语法所取代,它的使用是不鼓励的。Hanks,我想我对我的数据有点模棱两可。并不是桌上的每一场比赛都会有与另一场比赛相匹配的日期。事实上,大多数日期只有一个游戏,这就是为什么我试图找到有两个游戏的日期。我对表格进行了编辑,使其看起来更接近实际情况。最后,我对表格进行了轻微的调整,因此它可以获取所有正确的信息,谢谢:其中a.DATE=B.DATE和a.Home B.Home或a.visitor B.visitor我已经更新了代码示例,以匹配您的调整。很高兴我能帮上忙-祝您愉快