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
('卫斯理', '大厦'),
('卫斯理', '古声'),
('卫斯理', '地图'),
('卫斯理', '蓝血人'),
('郑文光', '飞向人马座'),
('布拉德伯里', '冰霜与烈火'),
('海茵莱茵', '傀儡主人'),
('海茵莱茵', '你们这些回魂尸 '),
('凡尔纳', '格兰特船长的儿女'),
('凡尔纳', '海底两万里'),
('凡尔纳', '八十天环游地球'),
('凡尔纳', '太阳系历险记');
解决方案 »
- Linux 系统中 冷备份MySql数据库操作步骤?
- c# 向mysql 存储一张图片 为何报错呢?
- 关于修改表的级联删除 的问题
- 跟踪mysql执行了哪些语句
- 100分,求求各位大侠帮帮忙!MySQL的查询,回答成功马上接帐!
- 关于MySql API中MYSQL_ROW的问题
- 简单的问题:怎么得到数据库中(MSSQL)某个表最后修改的时间?
- 请问怎样从一个数据库中读取所有表名?谢谢!
- MySQL select 查询语句 报错 Out of memory
- 关于mysql自增列的问题:Duplicate entry '0' for key 'PRIMARY'
- 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,被转移了。