0

私のデータベース テーブル Holiday には、フィールド ad Holidaydate->datetime 、 WeekendHoliday->bit、PublicHoliday->bit が含まれています。

私のテーブルの値は次のとおりです(例)

Holidaydate       WeekendHoliday       PublicHoliday 
-----------       --------------       -------------
4/02/2012             true                 false
4/20/2012             true                 false
5/3/2012              true                 False
5/30/2012             false                true
4/05/2013             false                true   

したがって、出力は次のようになります。

year      Month   count(weekend)   count(public)
----      -----   --------------   -------------
2012      April      2               0
2012      May        1               1
2013      April      0               1
4

3 に答える 3

1
     SELECT year(holidaydate),month(holidaydate), 
            sum(case Weekend when true then 1 else 0 end) wkEnd, 
            sum(case PublicHoliday when true then 1 else 0 end) pubHol
      FROM Holiday 
      GROUP BY year(holidaydate),month(holidaydate)

SQLサーバーを利用できません。これはmysqlでテストされています。ここで、年と月は、日付の年と月を返す関数です。CASEの構文は、データベース全体で同じである必要があります。

于 2012-05-30T07:09:21.717 に答える
1

I strongly suggest to use a calendar table for such kind of queries.

于 2012-05-30T06:58:03.250 に答える