sql查询组错误

时间:2011-11-17 13:12:29

标签: sql

有效的查询如下所示:

SELECT     d.dosno, 
CAST(SUM(k.uur) + SUM(k.minuut) / 60 AS VARCHAR(4)) + 'u ' + 
CAST(SUM(k.minuut) % 60 AS VARCHAR     (2)) + 'm' AS derivedColumn
FROM         dbo.kbpres AS k INNER JOIN
dbo.doss AS d ON k.ino = d.ino
WHERE     (d.dosno = '93690')
GROUP BY d.dosno

我想补充一点:

(SUM(k.uur) * 60 + SUM(k.minuut)) * k.prijs AS TotalCost

但是我应该根据我得到的错误将k.prijs添加到groupby中,但我不想要这个因为那时我得到21个结果而不是只有一个结果。

示例:

dosno    uur    minuut  prijs

93690    0      5       2

93690    1      0       1

93690    0      10      2

93690    0      5       5

我需要的结果是:

93690    1:20     800

3 个答案:

答案 0 :(得分:2)

答案是补充:

SUM((k.uur * 60 + k.minuut) * k.prijs) AS TotalCost

- 对于您的查询 - 这将得出每行的成本,然后将这些成本相加。

编辑:仅在soort为K的地方汇总prijs,添加:

SUM(case k.soort when 'K' then k.prijs end) AS FACKOSTEN

- 现有查询。

答案 1 :(得分:0)

当您GROUP时,您正在根据字段值合并行。

如果您没有聚合或GROUP字段,则查询引擎不知道要选择哪一行。您需要GROUP BY该字段,或者决定如何选择要使用的 prijs

显然有21个相应的值。

如果您提供有关您要完成的内容的更多信息,您将获得更好的答案。

答案 2 :(得分:0)

如果所有21个值的列prijs相同,那么如果你这样做

(SUM(k.uur) * 60 + SUM(k.minuut)) * MAX(k.prijs) AS TotalCost

然后我会给出理想的结果。