我尝试使用union for 3 table进行查看,每个表都使用正确的数据成功运行。在我尝试联合之后,totalqtyspb上的数据得到了错误的数据。
数据类型是varchar。
这是我的代码
SELECT
p.PONumber,
p.POdate,
p.customername,
p.description,
p.poqty,
SUM(q.deliveryqty) AS TotalQtySpb,
p.poqty-SUM(q.deliveryqty) AS OTSPO
FROM
tb_po p
INNER JOIN
tb_rls q ON p.PONumber = q.PONumber AND p.description = q.description
GROUP BY
p.PONumber,
p.PODate,
p.customername,
p.description,
p.poqty
UNION
SELECT
PONumber,
PODate,
CustomerName,
Description,
POQty,
'0' AS TotalQtySpb,
poqty AS OTSPO
FROM
tb_po
WHERE
poreleasedate = ''
UNION
SELECT
PONumber,
PODate,
CustomerName,
Description,
POQty,
'0' AS TotalQtySpb,
poqty AS OTSPO
FROM
tb_po
WHERE
poreleasedate != '' AND OutboundInbound = ''
我无法解释为什么totalqtyspb上的数据得到错误的数据,已经尝试更改为int数据类型仍然无效。
答案 0 :(得分:2)
我怀疑是因为您选择TotalQtySpb
一次为integer
,两次为varchar
,因此请尝试替换第三和第二个查询:
'0' AS TotalQtySpb,
对此:
0 AS TotalQtySpb,
虽然你没有说出什么是错的,所以它只是一个猜测。