有没有更好的查询方法

windlysnowly 2007-12-12 01:09:57
表结构如下:
币种 金额(本币) 金额(外币)
001 100 500
001 200 600
013 300 700
014 400 800

希望显示的结果:
币种 金额
001 100
001 200
013 700
001 300
014 800
001 400

注:001代表本币,其他的都是外币,检索结果中,外币币种都生成2条记录,一条是外币信息一条是本币信息
可以使用任何方法来实现(包括建临时表等)


...全文
79 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
windlysnowly 2007-12-13
  • 打赏
  • 举报
回复
很感谢上面几位的回答,其实仔细看我给的需求,对比注解和前后表还是比较清楚的
windlysnowly 2007-12-13
  • 打赏
  • 举报
回复
WITH TEMP(MONEY_TYPE,MONEY) AS
(SELECT MONEY_TYPE,LOCAL_MONEY MONEY
FROM TEST13
WHERE MONEY_TYPE <> '001'
UNION ALL
SELECT MONEY_TYPE,
CASE WHEN MONEY_TYPE ='001'
THEN LOCAL_MONEY ELSE FOREIGN_MONEY
END MONEY
FROM TEST13)
SELECT CASE WHEN MONEY IN(SELECT LOCAL_MONEY
FROM TEST13
WHERE MONEY_TYPE <> '001')
THEN '001'
ELSE MONEY_TYPE END, MONEY
FROM(SELECT * FROM TEMP ORDER BY MONEY_TYPE) TABLE


上面我写的这个需要进一步改进下 我不知道别的方法是否比他效率更好
shijubo 2007-12-12
  • 打赏
  • 举报
回复
select 币种, 金额(本币) from xxx where 币种='001' --本币数据
union
select '001' as 币种, 金额(本币) from xxx where 币种<>'001' --非本币数据的本币信息
union
select 币种, 金额(外币) from xxx where 币种<>'001' --非本币数据的外币信息

满足条件了吗?
yangxiao_jiang 2007-12-12
  • 打赏
  • 举报
回复
013 700--------003是外币,外币查询要查询两条记录,本币信息和外币信息
001 300--------这行的001本来应该是003,但是金额300是指本币,也就是指向了本币所代表的001编号
014 800--------同003一个意思

这几句没看明白
windlysnowly 2007-12-12
  • 打赏
  • 举报
回复
币种 金额(本币) 金额(外币)
001 100 500
001 200 600
013 300 700
014 400 800

希望显示的结果:
币种 金额
001 100--------001是本币,所以只查询金额(本币)
001 200--------
013 700--------003是外币,外币查询要查询两条记录,本币信息和外币信息
001 300--------这行的001本来应该是003,但是金额300是指本币,也就是指向了本币所代表的001编号
014 800--------同003一个意思
001 400
我已经写了一中语句,感觉不好
yangxiao_jiang 2007-12-12
  • 打赏
  • 举报
回复
select 币种 ,金额(本币) from table1
union all
select 币种 ,金额(外币) from table1

你要的是这个意思吗?

5,889

社区成员

发帖
与我相关
我的任务
社区描述
IBM DB2 是美国IBM公司开发的一套关系型数据库管理系统,它主要的运行环境为UNIX(包括IBM自家的AIX)、Linux、IBM i(旧称OS/400)、z/OS,以及Windows服务器版本
社区管理员
  • DB2
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧