阅读 12256 次
发表时间:2011-09-25
SELECT USERID, WM_CONCAT(ROLE_NAME)OVER(PARTITION BY USERID ORDER BY role_id DESC)   FROM MS_ACCESS 
后面差不多了,自己慢慢调吧
发表时间:2011-09-25
凡是关于技术的帖子,大凡都有一堆人跟帖~~
当然,这是好事!
发表时间:2011-09-25
543089122 写道

参考:http://jqsl2012.iteye.com/admin/blogs/1105523



访问这个网址的时候说我没权限
发表时间:2011-09-25
如果ORALCE\MYSQL本身有提供这字符串连接聚合函数的话,楼主这个问题,其实很容易解决的,即按USERID分组后,再将同组的role_name进行字符串连接就OVER。
像ORALCE中wm_concat函数还不是ORACLE所有版本都有的,而像这种字符连接函数在实际编程中,是很常用的,SELECT CATSTR(role_name) FROM USER GROUP BY USERID,而这边这个 CATSTR聚合函数是自己在数据库PL/SQL实现的,具体实现方式可参见http://hi.baidu.com/xoy2129/blog/item/c7885e66a201f125ab184cea.html
这样CATSTR就具有通用性了
发表时间:2011-09-26
先搞清楚人家是靠你算法,还是靠你对sql的熟悉程度。。
发表时间:2011-09-26
我想 group by应该能解决这个问题
发表时间:2011-09-26
DB2 , SQLSERVER 的怎么解决,有没有相应的函数
发表时间:2011-09-26
group by 可以搞定
发表时间:2011-09-26
string2020 写道
DB2 , SQLSERVER 的怎么解决,有没有相应的函数


SQL Cookbook中文版
第13章 分层查询
介绍了各种数据库的实现

实体书买不到的,但pdf网上到处都是

oracle的窗口原理 见 itpub书籍《剑破冰山—Oracle开发艺术 》
第11章 “Oracle层次查询”
第10章 趣谈oracle分析函数





发表时间:2011-09-26
刚在mysql里试了下:
mysql> user test;
mysql> select userid,group_contact(role_name) from userrole group by userid;
ERROR 1305 (42000): FUNCTION test.group_contact does not exist
mysql> select * from userrole;
+------------+--------+------------+---------+
| userRoleId | userid | role_name  | role_id |
+------------+--------+------------+---------+
|          1 |      1 | 管理员     |       1 |
|          2 |      1 | 编辑       |       2 |
|          3 |      1 | 超级管理员 |       3 |
|          4 |      2 | 普通会员   |       4 |
|          5 |      3 | 高级会员   |       5 |
|          6 |      4 |            |       0 |
+------------+--------+------------+---------+

为什么出现:ERROR 1305 (42000): FUNCTION test.group_contact does not exist ???
Global site tag (gtag.js) - Google Analytics