1

sales3 つのフィールドid(int、primary)、price(double)、date(datetime)を持つテーブル (たとえば) があるとします。

price今月の各日の属性の合計を取得するにはどうすればよいでしょうか?

そして先月まで?

私も似たようなリターンが必要です:

2月

01        02        03        04        ...        30
101.1     233.43    1232.42  3232.21             121.23

4月

01        02        03        04        ...        30        31
11.1     23.43      122.42   332.21              121.23    2323.32

どうすればこれを実行できますか?

例としてSQLを教えてください。

月の日数を発見するメソッドを作成し、SQL を繰り返し作成することを考えていますが、これは最善の方法ではないと思います。

4

2 に答える 2

2

実際にピボットを実行したい場合:

select year(date), month(date),
       sum(case when day(date) = 1 then price end) as price_01,
       sum(case when day(date) = 2 then price end) as price_02,
       . . .
       sum(case when day(date) = 31 then price end) as price_31
from sales
group by month(date), year(date)

次に、必要な日付の句を追加whereします。何かのようなもの:

where month(date) = month(now())
于 2013-04-26T15:19:31.310 に答える
1

すべてのアイデア(thx @MarcB、@Stephan、@GordonLinoff)を収集すると、SQLベローズが私が探しているものです:

2月

SELECT
    SUM(price) AS daySum
FROM
    sales
WHERE
    date BETWEEN DATE_FORMAT(NOW() - INTERVAL 2 MONTH,'%Y-%m-01 00:00:00') AND DATE_FORMAT(LAST_DAY(NOW() - INTERVAL 2 MONTH),'%Y-%m-%d 23:59:59')
GROUP BY
    YEAR(date),
    MONTH(date),
    DAY(date)

4月(現在は4月)

SELECT
    SUM(price) AS daySum
FROM
    sales
WHERE
    date BETWEEN DATE_FORMAT(NOW(),'%Y-%m-01 00:00:00') AND DATE_FORMAT(LAST_DAY(NOW()),'%Y-%m-%d 23:59:59')
GROUP BY
    YEAR(date),
    MONTH(date),
    DAY(date)

ありがとう。

于 2013-04-26T17:14:07.947 に答える