我有下表和它们的模式:
INV
id, product code, name, ucost, tcost, desc, type, qoh
1,123,CPASS 700,1.00,5.00,CPASS 700 Lorem, COM,5
2,456,Shelf 5,2.00,6.00,Shelf 5 KJ, BR,3
GRP
id,type,desc
1,COM,COMPASS
2,BR,SHELF
目前,我有这样的查询:
SELECT INV.*,GRP.DESCR AS CATEGORY
FROM INV LEFT JOIN GRP ON INV.TYPE = GRP.TYPE
WHERE INV.QOH = 0
该查询没有问题。
现在,我想知道每个QOH为0的INV记录的TCOST的总和。
在这种情况下,我是说我要做的就是写一个单独的查询,如下所示:
SELECT SUM(TCOST)
FROM INV
WHERE QOH = 0
尝试将这两个查询合并为一个对我来说有意义吗?
答案 0 :(得分:0)
嗯,您可能会使用相关查询,尽管我不确定这是最好的方法,因为我不确定我是否了解您的尝试:
SELECT INV.*,
GRP.DESCR AS CATEGORY ,
(SELECT SUM(TCOST) FROM INV WHERE QOH=0) as your_sum
FROM INV LEFT JOIN GRP ON INV.TYPE = GRP.TYPE
WHERE INV.QOH = 0
答案 1 :(得分:0)
如果您只想为sum()
提供一个值,那么查询就可以了。如果要使用总和作为新列,请使用窗口函数:
SELECT INV.*, GRP.DESCR AS CATEGORY,
SUM(INV.TCOST) OVER () as sum_at_zero
FROM INV LEFT JOIN
GRP
ON INV.TYPE = GRP.TYPE
WHERE INV.QOH = 0;
通过在第一行中添加一行来组合查询是没有意义的,因为各列之间存在很大差异。 SQL结果集要求所有行都具有相同的列。
答案 2 :(得分:0)
首先了解SUM是聚合函数,因此您可以像这样运行Query
(SELECT SUM(TCOST) FROM INV WHERE QOH=0) as total
对于提到的条件,这将返回Sum of TCOST in INV Table
。
另一种方法是根据某列(例如“类型”)找到总和
您可以编写
这样的查询 SELECT Type , SUM(TCOST) FROM INV WHERE QOH=0 GROUP BY type ;
尚不清楚您要总结什么条件。但是我认为以上两种方法都可以为您提供票价提示。