说明: 1.单张订购单可以多次验收
2.每一个Table都有一个id来对应(每个Table第一个栏位),
3.主档与明细档是1对多的关联
4.以下的SQL Statement不可用cursor,要一个SELECT完成(可以多层Select)
主要Table如下:
供应商(q_venderm) = sup_id + sup_nm
品名(q_prod) = prod_id + prod_nm(品名) + unit(单位)
厂别(ac_factm)= fact_id + fact_no(厂别编号) + fact_nm
订购单主档(q_orderm) = ordm_id + ord_no(订购单号) + vou_date(订购日) + fact_id + sup_id
订购单明细档(q_orderd) = ordd_id + ordm_id + prod_id + qty(数量) + price (单价)
验收单主档(q_verifym) = verifym_id + verify_no(验收单号) + vou_date(验收日) + fact_id + sup_id
验收单明细档(q_verifyd) = verifyd_id + verifym_id + ordd_id + prod_id + qty (验收量) 请问:
1. 找出验收次数超过3次的订购单号(ord_no)?2. 找出订购单B200210012 最大总额与最小总额之间的差异数?3. 找出订购单总和 > 全部订购单总和的平均值的订购单号
4. 找出尚未验收完的订购单中货品总额的总和?5. 找出至目前为止差异1个月(30天计) 尚未验收h的订购单
2.每一个Table都有一个id来对应(每个Table第一个栏位),
3.主档与明细档是1对多的关联
4.以下的SQL Statement不可用cursor,要一个SELECT完成(可以多层Select)
主要Table如下:
供应商(q_venderm) = sup_id + sup_nm
品名(q_prod) = prod_id + prod_nm(品名) + unit(单位)
厂别(ac_factm)= fact_id + fact_no(厂别编号) + fact_nm
订购单主档(q_orderm) = ordm_id + ord_no(订购单号) + vou_date(订购日) + fact_id + sup_id
订购单明细档(q_orderd) = ordd_id + ordm_id + prod_id + qty(数量) + price (单价)
验收单主档(q_verifym) = verifym_id + verify_no(验收单号) + vou_date(验收日) + fact_id + sup_id
验收单明细档(q_verifyd) = verifyd_id + verifym_id + ordd_id + prod_id + qty (验收量) 请问:
1. 找出验收次数超过3次的订购单号(ord_no)?2. 找出订购单B200210012 最大总额与最小总额之间的差异数?3. 找出订购单总和 > 全部订购单总和的平均值的订购单号
4. 找出尚未验收完的订购单中货品总额的总和?5. 找出至目前为止差异1个月(30天计) 尚未验收h的订购单
from (
select unique om.ord_no,vd.verifym_id
from q_orderd od , q_verifyd vd,q_orderm om
where od.ordd_id=vd.ordd_id and od.ordm_id=om.ordm_id
)
group by ord_no
having count(*)>3.
[align=center]==== 思想重于技巧 ====
[/align]
.
贴子分数<20:对自已的问题不予重视。
贴子大量未结:对别人的回答不予尊重。
.
[align=center]==== 思想重于技巧 ====
[/align]
.
贴子分数<20:对自已的问题不予重视。
贴子大量未结:对别人的回答不予尊重。
.
select max(qty * price) - min(qty * price)
from q_orderd
where ordm_id = 'B200210012'
1. 找出验收次数超过3次的订购单号(ord_no)?
select a.ord_no,count(*)
from q_orderm a
inner join q_verifym b on a.ordm_id = b.verifym_id
group by a.ord_no
having count(*) > 32. 找出订购单B200210012 最大总额与最小总额之间的差异数?
select max(a.qty * a.price) - min(a.qty * a.price)
from q_orderd a
inner join q_orderm b on a.ordm_id = b.ordm_id
where b.ord_no = 'B200210012'3. 找出订购单总和 > 全部订购单总和的平均值的订购单号
select
from q_orderm a inner join
(select ordm_id,sum( qty * price) as 'sum',sum(sum(qty * price))/count(distinct ordm_id) as 'avg'
from q_orderd
group by ordm_id) b on a.ordm_id = b.ordm_id
where b.sum > b.avg4. 找出尚未验收完的订购单中货品总额的总和?
select sum(sum)
from
(
select c.ordm_id,sum(qty * price) as 'sum'
from q_orderd c inner join
(select a.ordm_id
from q_orderm a
where not exist (select 1 from q_verifym b where b.verifym_id = a.ordm_id)) d on c.ordm_id = d.ordm_id
) e5. 找出至目前为止差异1个月(30天计) 尚未验收h的订购单
select a.ord_no
from q_orderm a
where datediff(dd,a.vou_date,getdate()) = 30
and not exist (select 1 from q_verifym b where b.verifym_id = a.ordm_id)