2016-04-01 25 views
0

列、など合計患者が投与された:MYSQLのクロス集計:行など日、日付を示す私はこのようなテーブルを持っている

CREATE TABLE `table1` (
    `id` int(11) NOT NULL DEFAULT '0', 
    `datefrom` datetime DEFAULT NULL, 
    `timefrom` varchar(255) DEFAULT NULL, 
    PRIMARY KEY (`id`)); 

私のデータは次のようになります。

SELECT id, datefrom, dateto FROM table1; 

1022, 2016-03-16 00:00:00, 2016-03-18 00:00:00 
1023, 2016-03-18 00:00:00, 2016-03-24 00:00:00 
1024, 2016-03-14 00:00:00, 0000-00-00 00:00:00 
1025, 2016-03-29 00:00:00, 2016-03-31 00:00:00 
1026, 2016-03-29 00:00:00, 2016-03-30 00:00:00 
1027, 2016-03-30 00:00:00, 2016-03-31 00:00:00 
1028, 2016-03-31 00:00:00, 0000-00-00 00:00:00 

私は行(datefromの分で開始し、最大0で終わるよう

  • 日とのクロス集計を示すに興味何datetoが指定されていない場合は、この特定の日に投与された患者の合計、

さらに

  • dateto fは、患者は、今日までに投与されます。

    上記のデータの予想結果は、(最初​​の行)のようになります。

    2016-03-14, 2 
    2016-03-15, 1 
    2016-03-16, 2 
    2016-03-17, 2 
    2016-03-18, 3 
    2016-03-19, 2 
    2016-03-20, 2 
    
    +0

    期待される結果を(既に与えられた入力で)追加してください。 – jarlh

    答えて

    1

    あなたは(一度作成し、すべての日の日付を充填することができる)すべての日付を担保テーブルを導入することができます。次に使用することができます

    SELECT adt.date_column, 
         COUNT(*) 
    FROM the_all_dates_table adt 
        JOIN table1 t1 ON adt.date_column BETWEEN t1.datefrom AND t1.dateto 
    GROUP BY adt.date_column 
    
    関連する問題