sql server - what - SQL GROUP BY,其中包含鏡像值的列




what is the function of sql server (2)

對不起,標題不好。 我想不出一個更好的方式來形容我的問題。

我有下面的表格:

Category | A | B
A        | 1 | 2
A        | 2 | 1
B        | 3 | 4
B        | 4 | 3

我想按Category對數據進行分組,每個類別只返回1行,但同時提供列AB值。

所以結果應該是這樣的:

category | resultA | resultB
A        | 1       | 2
B        | 4       | 3

這怎麼能實現?

我試過這個說法:

SELECT category, a, b
FROM table
GROUP BY category

但顯然,我得到以下錯誤:

列“a”在選擇列表中是無效的,因為它不包含在集合函數或GROUP BY子句中。

列“b”在選擇列表中是無效的,因為它不包含在集合函數或GROUP BY子句中。

我怎樣才能達到預期的效果?


嘗試這個:

SELECT category, MIN(a) AS resultA, MAX(a) AS resultB
FROM table
GROUP BY category

如果這些值是鏡像的,那麼你可以使用MINMAX在單個列上應用這兩個值,如a


您不希望按類別聚合,而是從結果中刪除重複的行(或者是您認為重複的行)。

你認為一對(x,y)等於對(y,x)。 要找到重複項,您可以將較低的值放在第一位,並將較大的值放在第二位,然後對行應用DISTINCT

select distinct
  category,
  case when a < b then a else b end as attr1,
  case when a < b then b else a end as attr2
from mytable;






aggregate