Sql 行号()不工作
当我运行这个时,我得到一个错误 “l”附近的语法不正确 这是我的第二张Sql 行号()不工作,sql,sql-server,sql-server-2012,Sql,Sql Server,Sql Server 2012,当我运行这个时,我得到一个错误 “l”附近的语法不正确 这是我的第二张中的贷款l 我是新来的行号(),我一定是错过了什么。如果您知道一种更简单的方法来获取行编号()并为每个c.no选择行1,这也会很有帮助 我在您的查询中使用的是SQL Server 2012,您错误地使用了别名。第一个SELECT语句的别名用作)loan l,此处loan是别名,因此无法识别l,并引发错误 我已将贷款l重命名为别名贷款,并更改了其相关位置: SELECT DISTINCT * FROM (SEL
中的贷款l
我是新来的行号()
,我一定是错过了什么。如果您知道一种更简单的方法来获取行编号()
并为每个c.no选择行1,这也会很有帮助
我在您的查询中使用的是SQL Server 2012,您错误地使用了别名。第一个SELECT
语句的别名用作)loan l
,此处loan
是别名,因此无法识别l
,并引发错误
我已将贷款l
重命名为别名贷款
,并更改了其相关位置:
SELECT DISTINCT
*
FROM
(SELECT
*,
ROW_NUMBER() OVER (PARTITION BY c.no_ ORDER BY app.beacon, l.beacon) AS seqnum
FROM
loan l
LEFT JOIN
cust c ON c.rowno = l.rowno_custloan_cust
LEFT JOIN
Applicant a ON a.CIFId = c.rowno
LEFT JOIN
Application app ON app.ApplicantId = a.ApplicantId
) loan l
LEFT JOIN
cust c ON c.rowno = l.rowno_custloan_cust
LEFT JOIN
Applicant a ON a.CIFId = c.rowno
LEFT JOIN
Application app ON app.ApplicantId = a.ApplicantId
WHERE
l.code IN ('DM', 'MF', 'DV', 'MC', 'MO', 'MC','MF','HR','OF','ML','VR','RV','S1','11','y2','y3','y4','y5','y6','y7','y8','y9')
AND seqnum = 1
ORDER BY
l.rowno
你只是想要这个吗
SELECT DISTINCT *
FROM (
SELECT *, ROW_NUMBER() OVER (PARTITION BY c.no_ ORDER BY app.beacon, l.beacon) AS seqnum
FROM loan l
LEFT JOIN cust c ON c.rowno = l.rowno_custloan_cust
LEFT JOIN Applicant a ON a.CIFId = c.rowno
LEFT JOIN Application app ON app.ApplicantId = a.ApplicantId
) AliasLoan
LEFT JOIN cust c ON c.rowno = AliasLoan.rowno_custloan_cust
LEFT JOIN Applicant a ON a.CIFId = c.rowno
LEFT JOIN [Application] app ON app.ApplicantId = a.ApplicantId
WHERE AliasLoan.code IN ('DM', 'MF', 'DV', 'MC', 'MO', 'MC','MF','HR','OF','ML','VR','RV','S1','11','y2','y3','y4','y5','y6','y7','y8','y9')
AND AliasLoan.seqnum = 1
ORDER BY AliasLoan.rowno
查看子查询的别名。这是“贷款l”。如果你想把它作为你的别名(不是我推荐的那样),你需要使用[loan l]。只是一个输入错误,你不能在派生表上使用两个别名。删除单词loan
,它应该可以工作……您给子查询提供了两个别名loan
和l
。SQL不是这样工作的。你只能给它1。我认为你不需要在外部查询和子查询中进行这些连接。那么我的子查询应该有别名还是主查询?loan是表名,l是别名
SELECT x.*
FROM (SELECT l.*, c.*, a.*, app.*
ROW_NUMBER() OVER (PARTITION BY c.no_ ORDER BY app.beacon, l.beacon) AS seqnum
FROM loan l LEFT JOIN
cust c
ON c.rowno = l.rowno_custloan_cust LEFT JOIN
Applicant a
ON a.CIFId = c.rowno LEFT JOIN
Application app
ON app.ApplicantId = a.ApplicantId
WHERE l.code IN ('DM', 'MF', 'DV', 'MC', 'MO', 'MC','MF','HR','OF','ML','VR','RV','S1','11','y2','y3','y4','y5','y6','y7','y8','y9')
) x
WHERE seqnum = 1
ORDER BY seqnum;