0

给定下表

月产品销售
--------- -------- -----    
1 月 1 日 10
1 月 2 日 15
2 月 3 日 23 日
15 年 3 月 1 日

我使用的查询是:

SELECT DISTINCT a.* FROM( -- possibly needed for where clause
    SELECT dateadd(month, x.MonthOffset,0) AS mes, x.produto, Sum(x.quantidade) AS vendas
    FROM
    (
        SELECT DATEDIFF(month, 0, a.data) AS MonthOffset, a.produto, a.quantidade
        FROM (
          SELECT l.*, fc.data FROM LINHAS AS l JOIN FacturaCli AS fc
              ON fc.codigo = l.codigo 
              UNION ALL
          SELECT l.*, ff.dataEmissão FROM LINHAS AS l JOIN FacturaForn AS ff
              ON ff.codigo = l.codigo
        ) AS a
    ) AS x
    GROUP BY MonthOffset, produto
) AS a

我想获得每月销售额更高的产品。

我在查询需要一个不能在“聚合组”中的字段时遇到问题。请注意,我提供的表格是查询的结果。

我使用的是 SQL Server 2008。我不能使用临时变量或over子句。 我不想重复引导我到该表的查询!但如果这是唯一的方法,那也没关系。

预期结果:

月产品销售
--------- -------- -----    
1 月 2 日 15
2 月 3 日 23 日
15 年 3 月 1 日
4

1 回答 1

1

一个非常棘手的解决方案来解决您的问题。

SELECT a.* 
FROM   mytable a 
       LEFT JOIN mytable b 
              ON a.Month = b.Month
                 AND a.Sales < b.Sales
WHERE  b.Month IS NULL 
于 2012-06-22T10:15:19.370 回答