请问数据表自连接SQL语句的问题

[复制链接]
查看11 | 回复2 | 2005-7-16 18:49:11 | 显示全部楼层 |阅读模式
现有表table结构如下(含数据):
date|object|target |value
----+------+---------+-----------
1999|objA|name |'99_objA_name'
1999|objA|number |'99_objA_number'
1999|objB|name |'99_objB_name'
1999|objB|number |'99_objB_number'
2000|objA|name |'00_objA_name'
2000|objA|number |'00_objA_number'
2000|objB|name |'00_objB_name'
2000|objB|number |'00_objB_number'
其中每一行记录为一个指标值,如第一条为1999年对象objA的name指标的值.
请问sql语句怎么写能够得到以下结果:
date|object|name
|number
----+------+--------------+-----------
1999|objA|'99_objA_name'|'99_objA_number'
1999|objB|'99_objB_name'|'99_objB_number'
2000|objA|'00_objA_name'|'00_objA_number'
2000|objB|'00_objB_name'|'00_objB_number'
用以下语句可以得到上面的结果,但太麻烦(尤其是当有多个不同的target时),请问有没有更简单的办法.
select t_1.date,t_1.object,t_1.value as name,t_2.value as number from table t_1,table t_2 where
t_1.date=t_2.date and
t_1.object=t_2.object and
tar_1.target='name' and
tar_2.target='number'
回复

使用道具 举报

千问 | 2005-7-16 18:49:11 | 显示全部楼层
可以简单一些的。
select t_1.date,t_1.object,max(case when t_1.value='name' then value end) as name,

max(case when t_2.value='number' then value end) as number
from table t_1
group by t_1.date,t_1.object
回复

使用道具 举报

千问 | 2005-7-16 18:49:11 | 显示全部楼层
收到了,我试试,多谢指点
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行