作者bobju (宝贝猪)
看板Database
标题Re: [SQL ] 问一下 sql语法要怎麽下
时间Wed Nov 12 19:38:42 2008
试试看这样的结果满不满意? 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
1F:推 drinks:感谢你的回答 ! 11/12 20:39