2017-02-26 9 views
2

ここでは、すべてのケースの合計を返したいと思います。私の要件は、特定の製品が過去10週間で販売されたかどうかを知ることです。毎週、1週間に売り上げがあったときに1を、戻ってきていないときに0を返す。だから、1つの製品が過去10週間で売上を出した場合、売上の数に関係なく10を返さなければなりません。しかし、以下のクエリを使用して、私は売り上げの数を取得します。mysqlのすべてのケースの合計を計算する

選択クエリ:

SELECT PartNo 
     , sum(CASE WHEN DocDate BETWEEN "2017-01-26" AND "2017-02-01" THEN 1 ELSE 0 END 
     + CASE WHEN DocDate BETWEEN "2017-02-02" AND "2017-02-08" THEN 1 ELSE 0 END) as Qty1 
    FROM (`tbl_sales2`) 
GROUP 
    BY `PartNo` 
ORDER 
    BY `Qty1` DESC; 

結果:

+-------------+------+ 
| PartNo  | Qty1 | 
+-------------+------+ 
| 09343M05068 | 6 | 
| 09343M05069 | 3 | 
| 09343M05070 | 2 | 
+-------------+------+ 
3 rows in set (0.00 sec) 

期待される結果:

+-------------+------+ 
| PartNo  | Qty1 | 
+-------------+------+ 
| 09343M05068 | 2 | 
| 09343M05069 | 2 | 
| 09343M05070 | 1 | 
+-------------+------+ 

表問合せ:

CREATE TABLE IF NOT EXISTS `tbl_sales2` (
`SaleId` int(11) NOT NULL AUTO_INCREMENT, 
`DocDate` date NOT NULL, 
`PartNo` varchar(20) NOT NULL, 
PRIMARY KEY (`SaleId`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1; 

サンプルデータ:

INSERT INTO `tbl_sales2` (`SaleId`, `DocDate`, `PartNo`) VALUES 
('1', '2017-01-26', '09343M05068'), 
('2', '2017-01-27', '09343M05068'), 
('3', '2017-01-28', '09343M05068'), 
('4', '2017-01-29', '09343M05068'), 
('5', '2017-01-28', '09343M05069'), 
('6', '2017-01-29', '09343M05069'), 
('7', '2017-02-02', '09343M05068'), 
('8', '2017-02-03', '09343M05068'), 
('9', '2017-02-02', '09343M05069'), 
('10', '2017-02-02', '09343M05070'), 
('11', '2017-02-02', '09343M05070'); 
+0

なぜあなたは '2017-01-26 'と' 2017-02-08 'の間に'を使用していませんか? – Strawberry

答えて

0

使用MAX代わりSUMPartNoために指定された日付範囲内の行に少なくとも存在する場合は1を取得する:

select PartNo, 
    max(case when DocDate between '2017-01-26' 
        and '2017-02-01' then 1 else 0 end) 
    + max(case when DocDate between '2017-02-02' 
        and '2017-02-08' then 1 else 0 end) as Qty1 
from `tbl_sales2` 
group by `PartNo` 
order by `Qty1` desc; 

が生成する:

PartNo  Qty1 
09343M05068 2 
09343M05069 2 
09343M05070 1 
+0

ありがとうございました。その働き –

関連する問題