作者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
推 gush0905:可以把原始TABLE 匯出SQL 再貼出來ㄇ?我想在我的本機上面 11/12 16:36
推 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,'xxx@gmail.com'),(2,'betty','aaab','0',1,2,'aaa@gmail.com'),(3,'jack','asdf','1',2,1,'ccc@gmail.com'),(4,'daisy','qwer','0',2,2,'ggg@gmail.com'),(5,'drinks','qweee','1',1,2,'drinks@gmail.com'),(6,'jojo','sssss','1',1,1,'jojo@gmail.com');
UNLOCK TABLES;
※ 編輯: drinks 來自: 220.130.139.12 (11/12 17:16)