0

为了简化问题,我只在测试表示例中使用了几个字段

主数据库

Id  Description type  cost
'1', 'Test1', '2', '100'
'2', 'Test2', '2', '100'
'3', 'Test3', '3', '100'
'4', 'Test4', '4', '100'

标签数据库

 ID     Name     Masterid
'1', 'Label1', '1'
'2', 'Label1', '2'
'3', 'Label2', '1'
'4', 'Label3', '1'

我想计算所有 ID 并为 master 中包含 label1 和 label2 的所有记录的成本字段汇总标签

我的查询

Select  count(Distinct m.id) as andtall , sum(m.cost) as cost
from
 master m

  join labels l ON  l.Masterid=m.id and l.name in ('Label1','Label2')

由于我在计数中使用 Distinct,因此结果将是正确的,但 Cost 是错误的,它包含 3 条记录而不是 2 条记录。

'2', '300' 我希望它返回 200,因为只应返回主表中的 2 条记录。

4

1 回答 1

1

尝试这个

SELECT  
  count( m.id ) as andtall,
  sum( m.cost ) as cost
FROM
 master m
 JOIN ( 
    SELECT 
      Masterid
    FROM 
      labels l 
    WHERE
      l.name in ('Label1', 'Label2') 
    GROUP BY master_id ) l ON l.Masterid = m.id 
于 2013-05-09T17:57:51.063 回答