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 に答える