Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 在SQLServer中添加30天、60天和90天列,用于在此期间支付的款项_Sql Server_Vb.net - Fatal编程技术网

Sql server 在SQLServer中添加30天、60天和90天列,用于在此期间支付的款项

Sql server 在SQLServer中添加30天、60天和90天列,用于在此期间支付的款项,sql-server,vb.net,Sql Server,Vb.net,我想在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.LastNam

我想在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 
我也尝试了以下方法,但它只给我一个空值

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]

您应该查看datediff-您的参数是错误的,您可以使用条件聚合,这样就不需要第三次连接

SELECT p.CustomerID,  SUM(p.Amount) As 'Amount',
         sum(case when DATEDIFF(day,  PaymentDate,GETDATE()) BETWEEN 0 AND 30 then amount else 0 end) [30days],
         sum(case when DATEDIFF(day,  PaymentDate,GETDATE()) BETWEEN 0 AND 60 then amount else 0 end) [60days],
         sum(case when DATEDIFF(day,  PaymentDate,GETDATE()) BETWEEN 0 AND 90 then amount else 0 end) [90days]
FROM Payment p
INNER JOIN Customer c
on p.CustomerID = c.customerID
Group by p.CustomerID;

您应该查看datediff-您的参数是错误的,您可以使用条件聚合,这样就不需要第三次连接

SELECT p.CustomerID,  SUM(p.Amount) As 'Amount',
         sum(case when DATEDIFF(day,  PaymentDate,GETDATE()) BETWEEN 0 AND 30 then amount else 0 end) [30days],
         sum(case when DATEDIFF(day,  PaymentDate,GETDATE()) BETWEEN 0 AND 60 then amount else 0 end) [60days],
         sum(case when DATEDIFF(day,  PaymentDate,GETDATE()) BETWEEN 0 AND 90 then amount else 0 end) [90days]
FROM Payment p
INNER JOIN Customer c
on p.CustomerID = c.customerID
Group by p.CustomerID;

您是否有一列可用于计算天数?您需要添加一列以捕获付款完成的日期和时间。这样,您就可以使用日期差异获得所需的结果。您是否有一列可用于计算天数?您需要添加一列以捕获付款完成的日期和时间完成。这样您就可以使用日期差异来获得所需的结果。