有没有一种方法可以使用DATE_FORMAT选择多个月?

时间:2020-02-06 02:26:03

标签: mysql

enter image description here 从上述ERD,我试图选择2月,9月和12月销售的产品总数及其描述。

这是我的发票表的摘要:

INV_NUMBER CUS_CODE INV_DATE 

1001       10014    2016-01-16 00:00:00
1002       10011    2016-01-16 00:00:00
1003       10012    2016-01-16 00:00:00

我的SQL查询:

SELECT P_DESCRIPT AS Product, SUM(P_CODE) AS 'Units Sold'

FROM  product
JOIN invoice 
WHERE INV_DATE LIKE (DATE_FORMAT("2017-01%-15", "%Y", "%m" ) 
OR  DATE_FORMAT("2017-06%-15", "%Y", "%m" ) 
OR DATE_FORMAT("2017-07%-15", "%Y", "%m" ))

GROUP BY P_DESCRIPT;

我知道我从“ WHERE ...%m”)弄错了一切 我需要得到这样的enter image description here

1 个答案:

答案 0 :(得分:3)

使用YEARMONTH函数(分别代表2月,9月和12月的2、9和12)编写此代码会更简单:

SELECT p.P_DESCRIPT AS Product, SUM(p.P_CODE) AS 'Units Sold'
FROM product p
JOIN line l ON l.P_CODE = p.P_CODE
JOIN invoice i ON i.INV_NUMBER = l.INV_NUMBER
WHERE YEAR(i.INV_DATE) = 2017
  AND MONTH(i.INV_DATE) IN (2, 9, 12)
GROUP BY p.P_DESCRIPT