2010.7.26
怎样实现这样的行列转置?
源数据:
writer,works
卫斯理,大厦
卫斯理,地图
卫斯理,古声
卫斯理,蓝血人
郑文光,飞向人马座
海茵莱茵, 傀儡主人
海茵莱茵, 你们这些回魂尸要实现结果为:
卫斯理,郑文光,海茵莱茵
大厦,飞向人马座,傀儡主人
地图,'',你们这些回魂尸
古声,
蓝血人,如果用这样的语句:
SELECT (
CASE writer
WHEN '卫斯理'
THEN works
ELSE 0
END
)wsl, ( CASE writer
WHEN '海茵莱茵'
THEN works
ELSE 0
END
)hyly
FROM temp_sf
WHERE writer != ''结果是:
卫斯理,郑文光,海茵莱茵
大厦,
地图,
古声,
蓝血人,
' ',飞向人马座,''
' ',' ',傀儡主人
' ',' ',你们这些回魂尸
也就是,走完一个,再走一个-- 表的结构 `temp_sf`
--CREATE TABLE IF NOT EXISTS `temp_sf` (
`writer` varchar(10) COLLATE utf8_bin NOT NULL,
`works` varchar(20) COLLATE utf8_bin NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin;--
-- 导出表中的数据 `temp_sf`
--INSERT INTO `temp_sf` (`writer`, `works`) VALUES
('卫斯理', '大厦'),
('卫斯理', '古声'),
('卫斯理', '地图'),
('卫斯理', '蓝血人'),
('郑文光', '飞向人马座'),
('布拉德伯里', '冰霜与烈火'),
('海茵莱茵', '傀儡主人'),
('海茵莱茵', '你们这些回魂尸 '),
('凡尔纳', '格兰特船长的儿女'),
('凡尔纳', '海底两万里'),
('凡尔纳', '八十天环游地球'),
('凡尔纳', '太阳系历险记');
怎样实现这样的行列转置?
源数据:
writer,works
卫斯理,大厦
卫斯理,地图
卫斯理,古声
卫斯理,蓝血人
郑文光,飞向人马座
海茵莱茵, 傀儡主人
海茵莱茵, 你们这些回魂尸要实现结果为:
卫斯理,郑文光,海茵莱茵
大厦,飞向人马座,傀儡主人
地图,'',你们这些回魂尸
古声,
蓝血人,如果用这样的语句:
SELECT (
CASE writer
WHEN '卫斯理'
THEN works
ELSE 0
END
)wsl, ( CASE writer
WHEN '海茵莱茵'
THEN works
ELSE 0
END
)hyly
FROM temp_sf
WHERE writer != ''结果是:
卫斯理,郑文光,海茵莱茵
大厦,
地图,
古声,
蓝血人,
' ',飞向人马座,''
' ',' ',傀儡主人
' ',' ',你们这些回魂尸
也就是,走完一个,再走一个-- 表的结构 `temp_sf`
--CREATE TABLE IF NOT EXISTS `temp_sf` (
`writer` varchar(10) COLLATE utf8_bin NOT NULL,
`works` varchar(20) COLLATE utf8_bin NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin;--
-- 导出表中的数据 `temp_sf`
--INSERT INTO `temp_sf` (`writer`, `works`) VALUES
('卫斯理', '大厦'),
('卫斯理', '古声'),
('卫斯理', '地图'),
('卫斯理', '蓝血人'),
('郑文光', '飞向人马座'),
('布拉德伯里', '冰霜与烈火'),
('海茵莱茵', '傀儡主人'),
('海茵莱茵', '你们这些回魂尸 '),
('凡尔纳', '格兰特船长的儿女'),
('凡尔纳', '海底两万里'),
('凡尔纳', '八十天环游地球'),
('凡尔纳', '太阳系历险记');
解决方案 »
- 如何判断表的id字段是否为主键 ? sql语句 ?
- 如何在MYSQL触发器中写另一电脑上的MYSQL数据库中的表?
- mysql查询本月的注册用户怎么写
- Mysql创建函数,不支持varchar返回值吗?
- mysql 列类型与c数据类型对应
- 为什么我的网站,几天就不能LOGIN,不能读MYSQL数据库,重启一下就好了
- mySQL怎么换行啊?呵呵,菜鸟
- 为什么我的LINU下的MYSQL连接不上
- mysqldump备份数据库不成功
- 关于Mysql5.6和5.7的性能问题
- MYSQL连接的问题。。
- Access denied for user 'SYSTEM'@'localhost' (using password: NO)
SELECT max((CASE writer WHEN N'卫斯理' THEN works ELSE '' END)) wsl,
max((CASE writer WHEN N'海茵莱茵' THEN works ELSE '' END )) hyly,
max((CASE writer WHEN N'凡尔纳' THEN works ELSE '' END )) FRN
FROM (select row_number() over(partition by writer order by works) grp,* from temp_sf) x
group by grp如此便可
我还在想,为什么刚发的贴子没了,原来是我弄成MYSQL,被转移了。