У меня очень сложный запрос:
DECLARE @cols AS NVARCHAR(MAX),
@query AS NVARCHAR(MAX),
@archivedate date = '5/1/2019';
WITH
E(n) AS(
SELECT n FROM (VALUES(0),(0),(0),(0),(0),(0),(0),(0),(0),(0))E(n)
),
E2(n) AS(
SELECT a.n FROM E a, E b
),
E4(n) AS(
SELECT a.n FROM E2 a, E2 b
),
cteTally(n) AS(
SELECT TOP((SELECT TOP (1) COUNT(DISTINCT ratechangedate) datecount
FROM MARS_DW.[dbo].[vw_GTMScheduledRateAndPaymentChangesWithAccountNumber_Archive]
WHERE ArchiveDate = @archivedate
GROUP BY account
ORDER BY datecount DESC)) ROW_NUMBER() OVER(ORDER BY (SELECT NULL)) n
FROM E4
)
SELECT @cols = (SELECT REPLACE( '
,MIN( CASE WHEN index_num = <<index_num>> THEN ratechangedate END) AS [date <<index_num>>]
,MIN( CASE WHEN index_num = <<index_num>> THEN new_noterate END) AS [rate <<index_num>>]' , '<<index_num>>', n)
FROM cteTally
ORDER BY n
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
set @query =
N'WITH a AS (
SELECT a.account,
dense_rank() OVER ( PARTITION BY a.account ORDER BY ratechangedate) AS index_num,
ratechangedate,
new_noterate
FROM MARS_DW.[dbo].[vw_GTMScheduledRateAndPaymentChangesWithAccountNumber_Archive] a
WHERE archivedate = @date
)
SELECT a.Account' + @cols + N'
FROM a
GROUP BY a.Account;'
EXECUTE sp_executesql @query, N'@date datetime', @date = @archivedate;
Я хочу получить те же результаты, но без извлечения аккаунта. Когда я удаляю a.Account, я получаю эту ошибку:
Сообщение 102, Уровень 15, Состояние 1, Строка 10
Неверный синтаксис рядом с ','.
Мои извинения Я очень новичок в SQL, поэтому я могу понять, почему это может быть не так актуально, как должно быть.