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)などのカウントが得られます

ユニオンクエリを使用して、追加の列で男性と女性の合計数を取得する方法はありますか?

それで

ここに画像の説明を入力

sex count problem1 problem2 problem3 (ここに性別の数が入ります)

両方の性別でそれができない場合、片方だけでできる方法はありますか?

編集済み: 最後の列、女性の合計数は私が追加したいものです。

4

3 に答える 3

1

これは、一時テーブルを使用して実現できます。ただし、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 に答える
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 に答える