我试图总结相同column
但条件不同的组然后全部按"Cliente"
(ID)
当我使用
SELECT Cliente, SUM([Valor Original]) As Emitidos FROM TAB_Documentos WHERE Condição = 0 GROUP BY Cliente
我得到了这个结果,但我需要加入/联合"Baixados"
, "Devolvidos"
,"Outros"
然后将它们全部按"Cliente"
...
我试图弄清楚如何加入那个 SQL 字符串......基本上是我需要的,但我需要它们一起......
SELECT Cliente, SUM([Valor Original]) As Emitidos FROM TAB_Documentos WHERE Condição = 0 GROUP BY Cliente
SELECT Cliente, SUM([Valor Original]) As Baixados FROM TAB_Documentos WHERE Condição = 1 GROUP BY Cliente
SELECT Cliente, SUM([Valor Original]) As Devolvidos FROM TAB_Documentos WHERE Condição = 2 GROUP BY Cliente
SELECT Cliente, SUM([Valor Original]) As OutrosFROM TAB_Documentos WHERE Condição = 3 GROUP BY Cliente
将过滤器放在聚合函数中,而不是使用WHERE
子句......
(这通常被称为conditional aggregation
。)
SELECT
Cliente,
SUM(CASE WHEN Condição = 0 THEN [Valor Original] END) As Emitidos,
SUM(CASE WHEN Condição = 1 THEN [Valor Original] END) As Baixados,
SUM(CASE WHEN Condição = 2 THEN [Valor Original] END) As Devolvidos,
SUM(CASE WHEN Condição = 3 THEN [Valor Original] END) As Outros
FROM
TAB_Documentos
GROUP BY
Cliente
但是,SQL 通常更适合规范化数据。例如,最简单的查询实际上是......
SELECT
Cliente,
Condição,
SUM([Valor Original]) AS [Valor]
FROM
TAB_Documentos
GROUP BY
Cliente,
Condição
虽然这不是您要求的格式,但它更短且更容易在后续 SQL 中重用;这是 SQL 的设计方式。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句