SQL查询以获取最近40个月的数据

时间:2019-12-10 05:03:23

标签: sql

我写了一个查询来显示下表中过去40个月的销售量

TABLE NAME: Sale
SALEID  SID  SLDATE
1001    1    01-JAN-14
1002    5    02-JAN-14
1003    4    01-FEB-14
1004    1    01-MAR-14
1005    2    01-FEB-14
1006    1    01-JUN-15

SELECT COUNT(SLDATE)  AS SALE_COUNT FROM Sale WHERE SLDATE <= 
ADD_MONTHS(SLDATE, -40);   /*MY QUERY LOGIC*/

EXPECTED RESULT:
 SALE_COUNT
 ----------
    0 

我得到的是:

  

“错误:您的查询匹配预期的结果,但存在逻辑错误。”

8 个答案:

答案 0 :(得分:1)

select count(*) as SALE_COUNT from sale where sldate <= add_ 

答案 1 :(得分:0)

使用DATE_SUB

select COUNT(SLDATE) from Sale where SLDATE > DATE_SUB(now(), INTERVAL 40 MONTH)

答案 2 :(得分:0)

SELECT COUNT(SALEID) SALE_COUNT FROM SALE WHERE SLDATE< = ADD_MONTHS(SLDATE, -40)

由于您必须计算销售收入,因此我们将计算SALEID而不是SALE DATE

答案 3 :(得分:0)

SELECT COUNT(SaleId) AS "SALE_COUNT" FROM Sale WHERE Sldate < = ADD_MONTHS('01-JUN-15', -40);

Sldate列中,我们应该使用最大日期。 SYSDATE在这里不合适,因为这取决于您何时解决。由于我们无法在MAX()子句中使用WHERE函数,因此我们从Sldate列中手动选择了最大日期,并添加-40以扣除月份。

答案 4 :(得分:0)

SELECT COUNT(*) SALE_COUNT FROM SALE WHERE SLDATE <= ADD_MONTHS(SLDATE, -40);

以上查询是正确的。

Check out the image

答案 5 :(得分:0)

SELECT COUNT(SLDATE) SALE_COUNT FROM SALE
WHERE SLDATE = ADD_MONTHS(SLDATE,-40);

也试试这个。它会

答案 6 :(得分:0)

选择 COUNT(Saleid) 作为 SALE_COUNT from Sale where Sldate between SYSDATE-40 AND SYSDATE;

我认为这个查询可能有效。它对我有用。

答案 7 :(得分:0)

过去 40 个月是指从当前日期算起,这就是您收到逻辑错误的原因。你应该试试这个查询:

SELECT COUNT(SLDATE) AS SALE_COUNT FROM Sale WHERE SLDATE >= ADD_MONTHS(SYSDATE, -40);