作者drinks (爪哇工程师)
看板Database
标题[SQL ] 问一下 sql语法要怎麽下
时间Wed Nov 12 15:46:14 2008
请问 我现在有个
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: 220.130.139.12
1F:推 gush0905:可以把原始TABLE 汇出SQL 再贴出来ㄇ?我想在我的本机上面 11/12 16:36
2F:推 gush0905:TRY TRY 11/12 16:50
补上 table 汇出的sql (用mysql dump出来的)
加上我做的假资料
DROP TABLE IF EXISTS `test`;
CREATE TABLE `test` (
`id` int(10) unsigned NOT NULL auto_increment,
`name` varchar(45) default NULL,
`code` varchar(45) default NULL,
`sex` varchar(45) default NULL,
`orgId` int(10) unsigned NOT NULL,
`departmentId` int(10) unsigned NOT NULL,
`email` varchar(45) default NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=big5;
LOCK TABLES `test` WRITE;
INSERT INTO `test` VALUES
(1,'johnny','aaaa','1',1,1,'
[email protected]'),(2,'betty','aaab','0',1,2,'
[email protected]'),(3,'jack','asdf','1',2,1,'
[email protected]'),(4,'daisy','qwer','0',2,2,'
[email protected]'),(5,'drinks','qweee','1',1,2,'
[email protected]'),(6,'jojo','sssss','1',1,1,'
[email protected]');
UNLOCK TABLES;
※ 编辑: drinks 来自: 220.130.139.12 (11/12 17:16)