看板 Database 關於我們 聯絡資訊
試試看這樣的結果滿不滿意? 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
drinks:感謝你的回答 ! 11/12 20:39