0

我目前正在使用查询

SELECT sex, count(sex) as [count], problem1, problem2, problem3
from myTable
group by sex, problem1, problem2, problem3
order by sex, problem1, problem2, problem3

这将使我计算每种性别(1、1,1 或 1,01)等所有可能的位组合

有什么方法可以使用联合查询来获取额外列中的男性和女性总数?

所以

在此处输入图像描述

性别计数问题1 问题2 问题3(性别计数在这里)

如果我不能为两性都做到这一点,有没有办法只为一个做到这一点?

编辑:最后一栏,女性总数是我要添加的。

4

3 回答 3

1

不确定UNION应该去哪里,但是如果您希望使用包含所有项目的附加列来扩展结果集COUNT,您可以使用以下内容:

SELECT sex, count(sex) as [count], problem1, problem2, problem3, (select count(1) from myTable) as TotalCount
from myTable
...

顺便说一句,不确定您是否愿意这样做,因为所有行的值都相同。通常,我们会编写一个单独的查询。

于 2012-05-02T19:23:35.507 回答
1
SELECT sex, count(sex) as [count], problem1, problem2, problem3, s.s_total
from myTable
, (select count( sex ) s_total from mytable) s
group by sex, problem1, problem2, problem3, s.s_total
order by sex, problem1, problem2, problem3

你可以在子查询部分做任何你喜欢的事情

(编辑 - 需要按相同的 s_total 分组)

于 2012-05-02T19:23:55.940 回答
1

您可以使用临时表来实现这一点。不过需要注意的是:您的计数将针对特定性别的每一行重复。

CREATE TABLE #Temp
(
    sex varchar(10), -- or whatever datatype you are using
    totalCount INT
)

INSERT INTO #Temp
(
    sex,
    totalCount
)
SELECT
    sex,
    count(1)
FROM
    myTable
GROUP BY
    sex

SELECT m.sex, count(m.sex) as [count], m.problem1, m.problem2, m.problem3, t.totalCount
from myTable AS m
JOIN #Temp AS t
ON t.sex = m.sex
group by m.sex, m.problem1, m.problem2, m.problem3, t.totalCount
order by m.sex, m.problem1, m.problem2, m.problem3, t.totalCount
于 2012-05-02T19:25:28.313 回答