没有附加查询的答案?

时间:2019-11-04 16:02:41

标签: sql sql-server

我的数据在两个表中。这两个表的格式如下:

Table Transaction

Table Customer

我必须找出所有年龄在25至35岁之间的客户,发现这些客户从数据中提供的最大交易日期算起,最近30天的交易总净收入是多少?

我写了下面的代码

SELECT      
TOP 1       YEAR(T2.TRAN_DATE)[TRAN_YEAR] ,MONTH(T2.TRAN_DATE)[TRAN_Month],
            SUM(T2.Total_amt)[REVENUE]  
FROM        TRANSACTIONS T2
RIGHT JOIN  CUSTOMER T1
ON          T1.CUSTOMER_ID = T2.CUST_ID
WHERE       DATEDIFF(YY, T1.DOB, GETDATE()) BETWEEN 25 AND 35
GROUP BY    YEAR(T2.TRAN_DATE),MONTH(T2.TRAN_DATE)
ORDER BY    YEAR(T2.TRAN_DATE) DESC, MONTH(T2.TRAN_DATE) DESC

我的查询有效,但是当我在excel上计算相同的内容时,给出了不同的答案。

我无法弄清楚我的错误。

1 个答案:

答案 0 :(得分:1)

我期望这样的查询:

FooExt.kt

请注意,它使用直接日期比较而不是SELECT SUM(T.Total_amt) as REVENUE] FROM TRANSACTIONS T JOIN CUSTOMER c ON c.CUSTOMER_ID = t.CUST_ID WHERE c.DOB >= DATEADD(YEAR, -35, GETDATE()) AND c.DOB < DATEADD(YEAR, -24, GETDATE()) AND t.TRAN_DATE > DATEADD(DAY, -30, GETDATE()); 。这些通常更准确。