“1”附近的语法不正确。(SQLSTATE=42000)(102)(严重性=15)
我正在SQL Server上尝试下面的查询。除了尝试使用pivot子句外,查询运行良好 怎么了?我在这里干什么?请帮忙 我试过使用[],但还是不走运“1”附近的语法不正确。(SQLSTATE=42000)(102)(严重性=15),sql,sql-server,tsql,Sql,Sql Server,Tsql,我正在SQL Server上尝试下面的查询。除了尝试使用pivot子句外,查询运行良好 怎么了?我在这里干什么?请帮忙 我试过使用[],但还是不走运 WITH main AS ( SELECT * FROM ( select a.LBrCode, a.PrdAcctId, a.AcctStat, b.ModuleType,
WITH main AS
(
SELECT
*
FROM
(
select
a.LBrCode,
a.PrdAcctId,
a.AcctStat,
b.ModuleType,
c.CodeDesc AS stat_desc,
a.DateOpen opn_date,
a.FreezeType,
a.FrzReasonCd,
isnull(d.AMLRating, 1) amlrating,
CASE
WHEN
(
a.AcctStat = 3
AND a.DateClosed > '31-dec-2020'
)
OR a.AcctStat <> 3
THEN
'live'
ELSE
'closed'
END r1
from
ac_mast a
inner join
product_mast b
on a.LBrCode = b.LBrCode
and rtrim(substring(a.PrdAcctId, 1, 8)) = rtrim(b.PrdCd)
left join
lkd c
on a.AcctStat = c.Code
and c.CodeType = 1057
LEFT JOIN
cust_mast d
ON a.CustNo = d.CustNo
where
b.ModuleType in
(
11, 12
)
UNION ALL
select
a.LBrCode,
a.PrdAcctId,
b.AcctStat,
c.ModuleType,
d.CodeDesc AS stat_desc,
a.CertDate opn_date,
b.FreezeType,
b.FrzReasonCd,
isnull(e.AMLRating, 1) amlrating,
(
case
when
(
a.ReceiptStatus = 99
and a.ClosedDate > '31-dec-2020'
)
or a.ReceiptStatus in
(
51,
97
)
then
'live'
else
'closed'
end
) r1
FROM
D020004 a
INNER JOIN
ac_mast b
ON a.LBrCode = b.LBrCode
AND substring(a.PrdAcctId, 1, 24) = substring(b.PrdAcctId, 1, 24)
INNER JOIN
product_mast c
ON a.LBrCode = c.LBrCode
and rtrim(substring(a.PrdAcctId, 1, 8)) = rtrim(c.PrdCd)
LEFT JOIN
lkd d
ON b.AcctStat = d.Code
AND d.CodeType = 1057
LEFT JOIN
cust_mast e
ON b.CustNo = e.CustNo
)
x
WHERE
r1 = 'live'
)
, hrk AS
(
SELECT
*
FROM
inop_mast
)
,
bal AS
(
SELECT
*
FROM
(
SELECT
a.LBrCode,
a.PrdAcctId,
a.Balance1,
a.Balance2,
a.Balance3,
a.Balance4,
b.ModuleType,
rank() over
(PARTITION BY a.LBrCode, a.PrdAcctId
ORDER BY a.CblDate DESC) rnk,
CASE
WHEN
(
b.ModuleType = 20
AND floor(substring(a.PrdAcctId, 17, 8)) <> 0
)
THEN
a.Balance1
ELSE
a.Balance4
END amt
FROM
cl_mast a
INNER JOIN
product_mast b
on a.LBrCode = b.LBrCode
and rtrim(substring(a.PrdAcctId, 1, 8)) = rtrim(b.PrdCd)
WHERE
a.CblDate <= '31-dec-2020'
)
t
WHERE
rnk = 1
)
--
SELECT
*
FROM
(
SELECT
a.FreezeType,
a.AcctStat,
a.stat_desc,
a.amlrating,
b.amt,
c.LBrCode,
c.PrdAcctId
FROM
main a
LEFT JOIN
bal b
ON a.LBrCode = b.LBrCode
AND a.PrdAcctId = b.PrdAcctId
left join
hrk c
on a.LBrCode = c.LBrCode
and a.PrdAcctId = c.PrdAcctId
and c.DormantDt between '01-oct-2020' and '31-dec-2020'
where
a.amlrating <> 0
)
r
pivot (
sum(amt)
FOR amlrating IN (1, 2, 3)
) pt
请帮忙
我正在使用Microsoft SQL Server Management Studio v14.0.17199.0
代码有点长,但希望大家都理解
大家好,我已经发布了一个更正的查询
根据我们的office规则,无法显示表名。您的CTE kyc\u dt中的子查询没有别名。对于这样的东西,如果您告诉我们错误指向哪一行,它确实很有帮助。tsql没有to_date函数,to_date不是T-SQL函数。两者都不是。RTRIM只接受一个参数。。。如果我诚实的话,错误太多了。在这之前有很多问题。你在这里做了标记,不是甲骨文;由于许多原因,上面的T-SQL无效。一些基本格式可能会有所帮助,空白是免费的。在[1]、[2]、[3]中尝试反洗钱