如果表中的两列具有相同的值,无论顺序如何,获取单行数据。

6

我有一个表,其中包含称为“caller”和“callee”的列,其具有以下值

caller callee
999 888
888 999
999 555
555 333
555 999

现在我希望只返回单行结果

caller1    caller2  count 
999        888      2
999        555      1
555        333      1
555        999      2

你想要计算每个对出现的次数吗?无论是正向还是反向。 - Gidil
你能否请发一下你目前的SQL查询语句? - Eric Leroy
嗨gidil,是的,我想知道这两个调用彼此之间的次数。 - Rajeev Kumar
1个回答

6
SELECT CASE
         WHEN caller < callee THEN callee
         ELSE caller
       END      AS caller1,
       CASE
         WHEN caller < callee THEN caller
         ELSE callee
       END      AS caller2,
       Count(*) AS [Count]
FROM   YourTable
GROUP  BY CASE
            WHEN caller < callee THEN callee
            ELSE caller
          END,
          CASE
            WHEN caller < callee THEN caller
            ELSE callee
          END 

你不需要比较caller1和caller2,只需计算它们的数量。 - Z .
@ZdravkoDanev - 这只扫描了一次表,而不是使用 UNION 的两次扫描。 - Martin Smith
你好,马丁·史密斯,感谢您的完美答案。如果我想用LINQ来实现这个问题,您能帮我把查询语句写出来吗? - Rajeev Kumar
@RajeevKumar - 很抱歉,我在LINQ方面不是很熟练。或许值得问一个新的问题。 - Martin Smith

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接