我如何 return 两行联合和每行的计数?
How do I return two lines of unions and a count for each row?
我尝试将 10 列放入一列,再将 10 列不同的列放入单独的一列,并在第三列中计算每对独特的情侣。
到目前为止我有
UNION
(SELECT a_3 as x, a_4 as y FROM result)
....
UNION
(SELECT a_19 as x, a_20 as y FROM result)
这给了我一个table如下
| x | y |
---------
| a | 1 |
| a | 2 |
| b | 1 |
| b | 3 |
etc...
我想要这个,但是我还想要第三列来计算每一行出现的次数,如下所示
| x | y |count|
---------------
| a | 1 | 10 |
| a | 2 | 3 |
| b | 1 | 6 |
| b | 3 | 2 |
etc...
我也可以:
select count(*) from (insert above union SQL)
但后来我得到了 table 的总数。
谢谢!
SELECT X,Y,COUNT(1) AS[COUNT] FROM
(
SELECT a_3 as x, a_4 as y FROM result
....
UNION
SELECT a_19 as x, a_20 as y FROM result
) x
GROUP BY X,Y
看起来您的原始 table 设计根本没有标准化。
可以使用CROSS APPLY
和Table Value Constructor
代替多联合查询来简化查询
select x, y, count(*) as [count]
from [result] t
cross apply
(
values (a_1, a_2), (a_3, a_4), (a_5, a_6),
. . .
(a_19, a_20)
) v (x, y)
group by x, y
我尝试将 10 列放入一列,再将 10 列不同的列放入单独的一列,并在第三列中计算每对独特的情侣。
到目前为止我有
UNION
(SELECT a_3 as x, a_4 as y FROM result)
....
UNION
(SELECT a_19 as x, a_20 as y FROM result)
这给了我一个table如下
| x | y |
---------
| a | 1 |
| a | 2 |
| b | 1 |
| b | 3 |
etc...
我想要这个,但是我还想要第三列来计算每一行出现的次数,如下所示
| x | y |count|
---------------
| a | 1 | 10 |
| a | 2 | 3 |
| b | 1 | 6 |
| b | 3 | 2 |
etc...
我也可以:
select count(*) from (insert above union SQL)
但后来我得到了 table 的总数。
谢谢!
SELECT X,Y,COUNT(1) AS[COUNT] FROM
(
SELECT a_3 as x, a_4 as y FROM result
....
UNION
SELECT a_19 as x, a_20 as y FROM result
) x
GROUP BY X,Y
看起来您的原始 table 设计根本没有标准化。
可以使用CROSS APPLY
和Table Value Constructor
代替多联合查询来简化查询
select x, y, count(*) as [count]
from [result] t
cross apply
(
values (a_1, a_2), (a_3, a_4), (a_5, a_6),
. . .
(a_19, a_20)
) v (x, y)
group by x, y