Sql 将聚合按分组

Sql 将聚合按分组,sql,oracle,Sql,Oracle,我无法按我所希望的方式显示数据。我想制作两行,每行显示一列,如下所示: Home Wins | Visitor Wins ------------------------ 3 | 2 我假设我的问题是将Case When添加到group by,因为现在没有group by子句,它会显示: Home Wins | Visitor Wins ------------------------ 1 | 1 这是你想要的吗 SELECT (CAS

我无法按我所希望的方式显示数据。我想制作两行,每行显示一列,如下所示:

Home Wins | Visitor Wins
------------------------
  3       |      2
我假设我的问题是将Case When添加到group by,因为现在没有group by子句,它会显示:

Home Wins | Visitor Wins
------------------------
  1       |      1

这是你想要的吗

SELECT  (CASE WHEN ga_home_score > ga_visitor_score THEN 'Home Wins'
              WHEN ga_home_score > ga_visitor_score THEN 'Visitor Win'
              ELSE 'Tie'
          END), COUNT(*) as cnt
FROM dl_game g JOIN
     dl_team ht
     ON g.ga_home_id = ht.te_id JOIN
     dl_team vt
     ON g.ga_home_id = vt.te_id
WHERE ga_schedule_date <= '15-JUN-12'
GROUP BY (CASE WHEN ga_home_score > ga_visitor_score THEN 'Home Wins'
               WHEN ga_home_score > ga_visitor_score THEN 'Visitor Win'
               ELSE 'Tie'
          END);

在编写查询时,您可能不需要连接。所有信息都在游戏表中。

谁知道你的问题是什么,因为你没有显示任何输入数据。你可能想熟悉SQLFiddle.com。您可以构建测试表并对其运行查询,通过提供指向显示表和查询的页面的链接,您可以让人们更容易地帮助您。只是一个建议。@OldProgrammer是对的——有可用的数据来重现这个问题很重要。谢谢。是的,这就是我要找的。非常感谢。
SELECT  (CASE WHEN ga_home_score > ga_visitor_score THEN 'Home Wins'
              WHEN ga_home_score > ga_visitor_score THEN 'Visitor Win'
              ELSE 'Tie'
          END), COUNT(*) as cnt
FROM dl_game g JOIN
     dl_team ht
     ON g.ga_home_id = ht.te_id JOIN
     dl_team vt
     ON g.ga_home_id = vt.te_id
WHERE ga_schedule_date <= '15-JUN-12'
GROUP BY (CASE WHEN ga_home_score > ga_visitor_score THEN 'Home Wins'
               WHEN ga_home_score > ga_visitor_score THEN 'Visitor Win'
               ELSE 'Tie'
          END);