2
這裏我想返回所有病例的總和。我的要求是要知道特定產品是否在過去10周銷售。對於每個星期,如果它在一週內有銷售,或者沒有任何銷售,則返回0。所以,如果一件產品在過去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');
爲什麼你不是在'2017-01-26'和'2017-02-08'之間使用'? – Strawberry