请教一条SQL语句
7个回答
2013-08-08
展开全部
分两次查,使用 union 关联一下即可
select 领用人1 领用人, 产品1, 产品1领用量, '' 产品2, '' 产品2领用量
from table_name
where 领用人1 is not null
union
select 领用人2 领用人, '' 产品1, '' 产品1领用量, 产品2, 产品2领用量
from table_name
where 领用人2 is not null
展开全部
select a.领用人1,a.产品1,a.产品1领用量,b.产品2,b.产品2领用量
from t a
left outer join t b on a.领用人 =b.领用人2
union all
select b.领用人2,null,null,b.产品2,b.产品2领用量
from t b
left outer join t a on a.领用人 =b.领用人2
where a.领用人 is null
---这个是考虑 领用人都不重复
如果重复的话,就不能这么写,会有乘积的,但是你没有给出重复数据的处理方法,所以,也就这么写了。
from t a
left outer join t b on a.领用人 =b.领用人2
union all
select b.领用人2,null,null,b.产品2,b.产品2领用量
from t b
left outer join t a on a.领用人 =b.领用人2
where a.领用人 is null
---这个是考虑 领用人都不重复
如果重复的话,就不能这么写,会有乘积的,但是你没有给出重复数据的处理方法,所以,也就这么写了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个要用临时表做
创建2个临时表:
create table #t1
(
lyr1 nvarchar(50),
cp1 nvarchar(50),
cpl1 nvarchar(50)
)
create table #t2
(
lyr2 nvarchar(50),
cp2 nvarchar(50),
cpl2 nvarchar(50)
)
select 领用人1,产品1,产品1零用量 into #t1 from表
select 领用人2,产品2,产品2零用量 into #t2 from 表
select 领用人2 ,'','' into #t1 from #t2
where #t2.领用人2 not in (select 领用人1 from #t1)
select 领用人1 ,'','' into #t1 from #t1
where #t1.领用人1 not in (select 领用人2 from #t2)
select 领用人1,产品1,产品1零用量,产品2,产品2零用量 from #t1,#t2
where 领用人1 = 领用人2
结果符合要求
创建2个临时表:
create table #t1
(
lyr1 nvarchar(50),
cp1 nvarchar(50),
cpl1 nvarchar(50)
)
create table #t2
(
lyr2 nvarchar(50),
cp2 nvarchar(50),
cpl2 nvarchar(50)
)
select 领用人1,产品1,产品1零用量 into #t1 from表
select 领用人2,产品2,产品2零用量 into #t2 from 表
select 领用人2 ,'','' into #t1 from #t2
where #t2.领用人2 not in (select 领用人1 from #t1)
select 领用人1 ,'','' into #t1 from #t1
where #t1.领用人1 not in (select 领用人2 from #t2)
select 领用人1,产品1,产品1零用量,产品2,产品2零用量 from #t1,#t2
where 领用人1 = 领用人2
结果符合要求
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
SELECT 领用人,产品1,产品1领用量,产品2,产品2领用量 FROM FULL JOIN table t1 ON table t2 WHERE t1.领用人1 = t2.领用人2;
你试试这个SQL语句好用不?
更多追问追答
追问
不行,因为领用人有相同的,所以结果是呈阶层数量的
追答
因为你这个是一张表。所以就是那个状态。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询