我有两个表:基表和详细信息表。我需要使用Base表从Detail表中获取计数。
基地表
Nid UserId BaseVal
--------------------
1 150 100
详细信息表
Did Nid SeqVal
----------------
1 1 500
2 1 600
我想要这个:
结果表
BaseVal SeqVal
---------------
100 1100
我尝试过这个查询,但我只能获得Summation值。我也需要BaseVal。
SELECT SUM(SeqVal) as SEQVAL
FROM TBL_DETAIL
WHERE Nid =: Nid
答案 0 :(得分:1)
您必须先join
个表,然后计算总和:
select b.nid, b.baseVal, sum(d.seqVal)
from base_table b join detail_table d on b.nid = d.nid
where b.nid =: Nid
group by b.nid, b.baseVal
答案 1 :(得分:1)
可能有多个答案。假设您的基表始终有1个记录,而详细信息表每个基表记录有多个行,则可能的答案是
SELECT
AVG(BaseVal) Sum_BaseVal, SUM(SeqVal) Sum_SeqVal
From BaseTable T1, DetailTable T2
WHERE T1.Nid = T2.Nid
AND T1.Nid = :1
将T1.Nid与正确值绑定,以确保获得所需Nid的值。
注意:您还可以将上述查询与GROUP BY Nid
一起使用(如果您的问题陈述是复杂查询的简化版本,则可能是必要的)
其他可能的答案可能是(我只给1节省时间,但存在更多)
WITH
SeqSum as (SELECT SUM(SeqVal) Sum_SeqVal FROM DetailTable WHERE Nid = 1)
SELECT BaseVal, Sum_SeqVal
FROM BaseTable , SeqSum
WHERE Nid = 1
您可以进一步调整查询以获得适当的条件(如果有的话)。