【发布时间】:2020-04-15 11:58:42
【问题描述】:
我想向我的 GridControl 添加三列,显示过去 30、60 和 90 天的付款。 下面是我用来获取单个客户的所有付款(金额)的 SQL 语句。
SELECT p.CustomerID, c.FirstName, c.LastName, SUM(p.Amount) As 'Amount
FROM Payment p
INNER JOIN Customer c
on p.CustomerID = c.ID
Group by p.CustomerID, c.FirstName, c.LastName
我也尝试了以下方法,但它只给了我一个 NULL 值
SELECT p.CustomerID, c.FirstName, c.LastName, SUM(p.Amount) As 'Amount', a.[30Days] As '30 Days'
FROM Payment p
inner join Customer c
on p.CustomerID = c.ID
JOIN (SELECT SUM(p.Amount) AS '30Days'
FROM Payment p
WHERE DATEDIFF(day, GETDATE(), PaymentDate) BETWEEN 0 AND 30) AS a ON c.ID = p.CustomerID
Group by p.CustomerID, c.FirstName, c.LastName, a.[30Days]
【问题讨论】:
-
你有可以用来计算天数的列吗?
-
您需要添加一列来记录付款完成的日期和时间。这样您就可以使用日期差异来获得您想要的结果。
标签: sql-server vb.net