我需要在一张没有“迟交费”和“报税费”的表格内取得总费用,然后在核实正确的许可证ID时,包括在场的费用总额,当我试图将第二项费用加到查询中时,费用就会翻倍。这是我到目前为止所拥有的。
SELECT
PERMIT.CODE,
PERMIT.ID2,
PERMIT.ID1,
PERMIT.ID3,
SUM(ITEM.FEE) AS TotalFee,
FROM
PERMIT,
ITEM
AND PERMIT.CODE = ITEM.CODE
AND PERMIT.ID1 = ITEM.ID1
AND PERMIT.ID2 = ITEM.ID2
AND PERMIT.ID3 = ITEM.ID3
AND ITEM.DESC <> 'Late Fee'
AND ITEM.DESC <> 'Filing Fee'结果得到正确的数字:
TOTALFEE
550
350然而,当我将第二笔费用加到查询中时:
SELECT
PERMIT.CODE,
PERMIT.ID2,
PERMIT.ID1,
PERMIT.ID3,
SUM(ITEM.FEE) AS TotalFee,
SUM(t.FEE) AS Fee,
FROM
PERMIT,
ITEM,
ITEM t
AND PERMIT.CODE = ITEM.CODE
AND PERMIT.ID1 = ITEM.ID1
AND PERMIT.ID2 = ITEM.ID2
AND PERMIT.ID3 = ITEM.ID3
AND ITEM.DESC <> 'Late Fee'
AND ITEM.DESC <> 'Filing Fee'
AND PERMIT.CODE = t.CODE
AND PERMIT.ID1 = t.ID1
AND PERMIT.ID2 = t.ID2
AND PERMIT.ID3 = t.ID3 我得到了同样的两行,但数字是错的。结果:
TOTALFEE | FEE
1650 | 1650
2100 | 2100我做错了什么?
发布于 2015-10-07 20:06:03
您的查询没有group by,在使用聚合函数时应该是这样。此外,您还可以使用条件聚合获得所需的结果。
SELECT
PERMIT.CODE,
PERMIT.ID2,
PERMIT.ID1,
PERMIT.ID3,
SUM(case when ITEM.DESC <> 'Late Fee' then ITEM.FEE end) AS TotalFee,
SUM(case when ITEM.DESC <> 'Filing Fee' then ITEM.FEE end) AS Fee
FROM PERMIT JOIN ITEM
ON PERMIT.CODE = ITEM.CODE
AND PERMIT.ID1 = ITEM.ID1
AND PERMIT.ID2 = ITEM.ID2
AND PERMIT.ID3 = ITEM.ID3
GROUP BY PERMIT.CODE, PERMIT.ID2, PERMIT.ID1, PERMIT.ID3https://stackoverflow.com/questions/33001408
复制相似问题