【问题标题】:How to get SQL formatted output如何获取 SQL 格式的输出
【发布时间】:2017-06-07 07:21:46
【问题描述】:

我有这样的 SQL 表,

Column_TEAM
AUS
USA
IND
RUS

预期输出是(一支球队只能与另一支球队交手一次)

AUS vs USA
AUS vs IND
AUS vs RUS
USA vs IND
USA vs RUS
IND vs RUS

我尝试使用 Rank() 函数,但没有成功。 请在 SQL Server 或 PostgreSQL 中帮助我

【问题讨论】:

    标签: sql sql-server database postgresql sql-server-2008


    【解决方案1】:

    您也可以使用简单的内部连接来完成此操作。给你...

    SELECT T2.CTRY2,T1.CTRY1
    FROM 
    (SELECT CTRY AS CTRY1,ROW_NUMBER() OVER(ORDER BY CTRY) AS R1 FROM (VALUES ('AUS'),('USA'),('IND'),('RUS') ) CT (CTRY)) T1
    
    JOIN 
    
    (SELECT CTRY AS CTRY2,ROW_NUMBER() OVER(ORDER BY CTRY) AS R2 FROM (VALUES ('AUS'),('USA'),('IND'),('RUS') ) CT (CTRY)) T2
    
    ON T1.R1 > T2.R2
    ORDER BY T1.CTRY1 ASC
    

    【讨论】:

      【解决方案2】:

      您需要按如下方式自行加入您的表:

      -- SQL Server concatenation syntax
      SELECT a.Column_TEAM + ' vs ' + b.Column_TEAM
      FROM my_table a
      JOIN my_table b ON a.Column_TEAM < b.Column_TEAM
      
      -- PostgreSQL concatenation syntax
      SELECT a.Column_TEAM || ' vs ' || b.Column_TEAM
      FROM my_table a
      JOIN my_table b ON a.Column_TEAM < b.Column_TEAM
      

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多