这个SQL语句怎么写好呢?

来源:百度知道 编辑:UC知道 时间:2024/06/01 14:00:35
已经有一张表A:
货品,批次,进出港类别,货位,目标货位,吨位
大米,PC1,进港,货位1,【NULL】,10吨
大米,PC2,进港,货位1,【NULL】,10吨
大米,PC1, 出港,货位1,【NULL】,5吨
大米,PC1,转港,货位1,货位2,3吨

现在要求统计出报表B:
货品,批次,货位,吨位
大米,PC1, 货位1,2吨
大米,PC1, 货位2,3吨
大米,PC2, 货位1,10吨

请问这样的SQL语句怎么构造啊,有个字段的值要从两个字段中取数的,糊涂了。每个批次的货物可以单独看成一种货物。
可能你们还没有看清问题啊,这个最重要还要计算出,每种货品最终在每个货位的存货量,包括统计出转货位之后的信息。
比如,货位1进了10吨,出了5吨,转了3吨给货位2,要显示出最后结果为:货位1 大米 2吨,货位2 大米 3吨。

SELECT 货品, 批次, 货位, SUM(吨位) AS 吨位
FROM
(
(SELECT 货品, 批次, 进出港类别, 货位, 0 - 吨位 AS 吨位
FROM A
WHERE (进出港类别 = '出港')
)
UNION
(
SELECT 货品, 批次, 进出港类别, 货位, 0 - 吨位 AS 吨位
FROM A
WHERE (进出港类别 = '转港')
)
UNION
(
SELECT 货品, 批次, 进出港类别, 货位, 吨位
FROM A
WHERE (进出港类别 = '进港')
)
UNION
(
SELECT 货品, 批次, 进出港类别, 目标货位 AS 货位, 吨位
FROM A
WHERE (进出港类别 = '转港')
)
) AS M
GROUP BY 货品, 批次, 货位

select 货品,批次,货位,吨位
insert into B
from A

从其他表中取数据可以把字段写成"表.字段"。
提醒你记得以后吧这种问题放到数据库的位置,方便网友给你回答哦!

不知道是不是这样:
SELECT 货品,批次,货位,吨位 FROM A ORDER BY 货品,批次

我想应该没有这么简单吧.如果不是请你把问题补充清楚.

select * from(
select 货品,批次,货位,convert(varchar(50),sum(case when 进出港类别='进港' then convert(int,replace(吨位,'吨','')) when 进出港类别 in('出港','转港') then -1*convert(int,replace(吨位,