我写了一个查询来显示下表中过去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
我得到的是:
“错误:您的查询匹配预期的结果,但存在逻辑错误。”
答案 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);
以上查询是正确的。
答案 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);