SQL语句查询的问题

whatapig 2001-10-15 02:21:54
我现在有两个视图,列名如下:
view1: id A T
view2: id B T
其中id不唯一。每个view都按照id排序,相同的id按照T排序
并且在view1中出现的id不保证在view2中也出现。反之亦然。
view1和view2中id和T的类型在相同,A和B可以不同。

例如可能的数据为
id A T id B T
1 a1 0 1 b1 0
1 a2 1 3 b2 1
2 a3 0 4 b3 0

我现在要得到的结果集为
id A B T
1 a1 0
1 b1 0
1 b2 1
2 a3 0
3 b2 1
4 b3 0

空缺部分表示无意义,并且首先按照id进行排序,在id相同的情况下按照T进行排序。
类似于union,但是这个关键字要求两个表的列类型必须相同。
哪位高手帮帮我。(创建临时视图也可以。)

更进一步的,如果view1中有若干项A,view2中有若干项B,或者有多个view(结构类似),该如何写查询?



...全文
69 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
whatapig 2001-10-16
  • 打赏
  • 举报
回复
ok,结贴
KingSunSha 2001-10-15
  • 打赏
  • 举报
回复
既然返回的是一个纪录集, 那其中的字段总归有一个类型, 全部转成字符型吧

select id, to_char(A), '' as B, T from view1
union all
select id, '' as A, to_char(B), T from view2
order by id,T
xzou 2001-10-15
  • 打赏
  • 举报
回复
select id, A, ' ' as B, T from view1
union all
select id, null as A, B, T from view2
order by id,T
whatapig 2001-10-15
  • 打赏
  • 举报
回复
没用。
两个select中的A和B不一样,' ' as A的到的是char(1)类型,如果A本身为numberic类型union就报错。
smartdonkey 2001-10-15
  • 打赏
  • 举报
回复
select id,a,'',t from view1
union all
select id ,'',b,t from view order by id,t
nononono 2001-10-15
  • 打赏
  • 举报
回复
select id, A, ' ' as B, T from view1
union all
select id, ' ' as A, B, T from view2
order by id,T

34,587

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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