请教一条查询语句

小菲1215 2014-03-24 05:43:58
表1
Fld_Type_Oid Fld_Type
A 添加
B 删除
C 修改

表2
Fld_Type_Oid Fld_Op_Oid
A 20140324001
B 20140324001
A 20140324002

要求得到结里
Fld_Op_Oid Fld_Type_Oid
20140324001 A
20140324001 B
20140324001 null
20140324002 A
20140324002 null
20140324002 null
请问该语句怎么写,谢谢
我用CROSS join写了个不对,如果只有 20140324001只有一条记录没有问题,一条以上结果就不对
谢谢大大帮忙一下,谢谢
...全文
107 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 2 楼 xiaobifei 的回复:
不明白,能详细点吗,谢谢
试试这个:
--drop table t1,t2

create table t1( Fld_Type_Oid varchar(10), Fld_Type varchar(10))

insert into t1
select 'A',                     '添加' union all                    
select 'B',                     '删除' union all
select 'C',                    '修改'

create table t2(Fld_Type_Oid varchar(10),  Fld_Op_Oid varchar(20))

insert into t2
select 'A',                           '20140324001' union all
select 'B',                           '20140324001' union all
select 'A',                           '20140324002'
go


select a2.Fld_Op_Oid,t2.Fld_Type_Oid 
from 
(
select Fld_Type_Oid from t1
)a1
cross join
(
select distinct Fld_Op_Oid from t2
)a2
left join t2
       on t2.Fld_Op_Oid = a2.Fld_Op_Oid and
          t2.Fld_Type_Oid = a1.Fld_Type_Oid
left join t1
       on t1.Fld_Type_Oid = t2.Fld_Type_Oid 
/*
Fld_Op_Oid	Fld_Type_Oid
20140324001	A
20140324001	B
20140324001	NULL
20140324002	A
20140324002	NULL
20140324002	NULL
*/ 
 
小菲1215 2014-03-24
  • 打赏
  • 举报
回复
不明白,能详细点吗,谢谢
水族杰纶 2014-03-24
  • 打赏
  • 举报
回复
引用 楼主 xiaobifei 的回复:
表1 Fld_Type_Oid Fld_Type A 添加 B 删除 C 修改 表2 Fld_Type_Oid Fld_Op_Oid A 20140324001 B 20140324001 A 20140324002 要求得到结里 Fld_Op_Oid Fld_Type_Oid 20140324001 A 20140324001 B 20140324001 null 20140324002 A 20140324002 null 20140324002 null 请问该语句怎么写,谢谢 我用CROSS join写了个不对,如果只有 20140324001只有一条记录没有问题,一条以上结果就不对 谢谢大大帮忙一下,谢谢
在cross之前根据一定规则 对表2 进行筛选

34,576

社区成员

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

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