请教一条SQL语句

数据库是sql2000领用人1与领用人2有相同的人,产品1与产品2也有相同已知表:想要得到:... 数据库是sql2000
领用人1与领用人2有相同的人,产品1与产品2也有相同
已知表:

想要得到:
展开
 我来答
匿名用户
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
guduyishuai
2013-08-08 · TA获得超过191个赞
知道小有建树答主
回答量:154
采纳率:0%
帮助的人:123万
展开全部

lyr 领料人,cp 产品,cplyl 产品领用量

试一下看对不对

追问
好像不对,如果产品1的个数与产品2不相同,那么会默认填充上一行的产品
追答

lyr=cplyr sl=cplyl

这样试一下
原表

查询后

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
p_rain2002
2013-08-08 · 超过53用户采纳过TA的回答
知道小有建树答主
回答量:145
采纳率:0%
帮助的人:127万
展开全部
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
---这个是考虑 领用人都不重复
如果重复的话,就不能这么写,会有乘积的,但是你没有给出重复数据的处理方法,所以,也就这么写了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
chen_hongyang
2013-08-08 · TA获得超过5447个赞
知道大有可为答主
回答量:2790
采纳率:91%
帮助的人:877万
展开全部
这个要用临时表做
创建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

结果符合要求
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hr_s_pre
2013-08-08 · 超过31用户采纳过TA的回答
知道答主
回答量:87
采纳率:100%
帮助的人:75.5万
展开全部
SELECT 领用人,产品1,产品1领用量,产品2,产品2领用量 FROM FULL JOIN table t1  ON table t2 WHERE t1.领用人1 = t2.领用人2;

你试试这个SQL语句好用不?

更多追问追答
追问
不行,因为领用人有相同的,所以结果是呈阶层数量的
追答
因为你这个是一张表。所以就是那个状态。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式