有三个数据表不知道能不能用sql语句得到查询结果?

2024-12-03 10:54:54
推荐回答(4个)
回答1:

select t1.存货名称,isnull(sum(t2. 期初结存数量),0) 期初结存数量,
isnull(sum(t3. 本期收入数量),0) 本期收入数量,
isnull(sum(t4. 本期发出数量),0) 本期发出数量,
isnull(sum(t2. 期初结存数量),0)+isnull(sum(t3. 本期收入数量),0)-isnull(sum(t4. 本期发出数量),0) 期末结存数量
from
(select 存货名称 from 表1
union
select 存货名称 from 表2
union
select 存货名称 from 表3) t1
left join 表1 t2 on t1.存货名称=t2.存货名称
left join 表2 t3 on t1.存货名称=t3.存货名称
left join 表3 t4 on t1.存货名称=t4.存货名称
group by t1.存货名称

额,有点长,看不懂再问吧

回答2:

select 存货名称, 期初结存数量, 本期收入数量, 本期发出数量, nvl(期初结存数量, 0) + nvl(本期收入数量, 0) - nvl(本期发出数量, 0) as 期末结存数量
from

(
select 存货名称, sum(期初结存数量) as 期初结存数量, sum(本期收入数量) as 本期收入数量 , sum(本期发出数量) as 本期发出数量
from
(
select 存货名称, 期初结存数量, null as 本期收入数量, null as 本期发出数量
from 表1
union all
select 存货名称, null as 期初结存数量, 本期收入数量, null as 本期发出数量
from 表2
union all
select 存货名称, null as 期初结存数量, null as 本期收入数量, 本期发出数量
from 表3
) A
group by 存货名称
) B

其中nvl是oracle中判断是否为空的函数,为空置为0,如果是其他数据库类型,这个函数可能不同,请酌情修改

回答3:

select distinct 表1.存货名称,期初结存数量,本期收入数量,本期发出数量,
(期初结存数量+本期收入数量-本期发出数量) as 期末结存数量
from 表1 inner join 表2 on 表1.存货名称=表2.存货名称
inner join 表1.存货名称=表3.存货名称

回答4:

ui,iumtynghfn6u