我有日期表:
我想通过计算表上2019-06-30到2020-03-30之间的行来显示多少行?输出应该是10行。我试过了
SELECT ln.datestart,
ln.loanid,
col.IDNo,
ls.LoanID,
max(CAST(col.DateOR AS date)) AS lastpayment,
COUNT(ls.loanid) AS rowcount
FROM Collections AS col
INNER JOIN LoanSchedules AS ls ON ls.LoanID = col.IDNo
INNER JOIN Loans AS ln ON ln.LoanID = ls.LoanID
WHERE ls.DatePayment BETWEEN ln.DateStart AND max(col.DateOR)
GROUP BY ln.loanid,
col.IDNo,
ls.LoanID,
ln.datestart
但它会返回一个错误:
An aggregate may not appear in the WHERE clause unless it is in a subquery contained in a HAVING clause or a select list, and the column being aggregated is an outer reference.
附言: ln.datestart
来自记录每个客户的第一次付款计划的另一个表。我用 max(dateor)
从另一个表中知道最后的付款日期。
3条答案
按热度按时间8wtpewkr1#
你必须使用
having
子句进行筛选时,628mspwn2#
我不太清楚你想要得到什么结果,但我想你需要使用apply操作符。我试着复制你的案例,结果是:
https://i.stack.imgur.com/9hxpc.png
5sxhfpxr3#
你的逻辑很难理解。显示一个数据表,但查询引用三个表。不过,我很肯定,你可以用一个窗口函数来做你想做的事情。只是不清楚你想要哪个窗口功能。我想:
这假设您正在寻找基于四个参数的最大值
group by
钥匙。