推 drinks:感謝你的回答 ! 11/12 20:39
試試看這樣的結果滿不滿意? fO_o
SELECT DISTINCT t.orgid, m.c AS mc, f.c AS fc
FROM test AS t
LEFT JOIN (
SELECT orgid, sex, count( * ) AS c
FROM `test`
GROUP BY orgid, sex
HAVING sex =1
) AS m ON m.orgid = t.orgid
LEFT JOIN (
SELECT orgid, sex, count( * ) AS c
FROM `test`
GROUP BY orgid, sex
HAVING sex =0
) AS f ON f.orgid = t.orgid
LIMIT 0 , 30
#用測試資料跑出來的結果:
orgid mc fc
1 3 1
2 1 1
至於'序號', 只怕要在撈資料出來時自己編進去了.
我用mysql, 沒有支援rownum, 要在SQL下製造rownum有點複雜.
※ 引述《drinks (爪哇工程師)》之銘言:
: 請問 我現在有個
: table readerInfo
: sex(性別),
: org(單位),
: name,
: code,
: ...,
: 我現在想要針對這table做 下group 指令(做報表)
: -------------------------
: | 序號 | 館別 | 男 | 女 |
: -------------------------
: | 1 | org1 | 12 | 21 | <==這是我想要的樣子
: -------------------------
: | 2 | org2 | 33 | 44 |
: -------------------------
: | 3 | org3 | 0 | 4 |
: -------------------------
: | 4 | org4 | 77 | 12 |
: -------------------------
: 我現在下的語法是
: select count(*) from reader a group by sex,org;
: 結果 會是
: -------------
: | 序號 | |
: -------------
: | 1 | 12 |
: -------------
: | 2 | 21 |
: -------------
: | 3 | 33 |
: -------------
: | 4 | 44 |
: -------------
: 結果...恩...應該是有對(數字都對) 只是不是我想要的樣子
: 所以現在 我就去select 所有 org
: 然後把得到的結果
: 用迴圈處理
: select * from reader a where a.org =? group by a.sex;
: 就可以得到最上面的結果 查詢次數 是 1+(org個數)次
: 可是我覺得 應該可以不用程式 就可以用sql語法下出來
: 只是我不會下.......(我sql學的不是很好><)
: 所以,想請問高手 有辦法用 一次 sql 下的出來嗎?
: 我是用 ms sql server 2003
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 211.74.110.209