У меня есть следующий SQL-запрос:SQL-запрос с шарниром дает ошибку
SELECT *
FROM (
SELECT ClientNumber, ClientName, YearEndDate, schedule, a1, ad1, a2, ad2, a3, ad3,
cv.[id] as CvId,
[dataCV] =
CASE cv.[id]
WHEN 'DATUM_AVA' THEN CONVERT(DATETIME, cv.[data], 112)
WHEN 'RECHTSVORM' THEN cv.[data]
END,
DATEADD(day, 30, [data]) AS Stat_Filing_Date,
To_Be_Filed =
CASE
WHEN DATEADD(day, 30, [data]) < GETDATE() THEN 'Yes'
ELSE 'No'
END
FROM EngagementFiles ef
INNER JOIN ac
ON ef.id = ac.EngagementFile_Id
INNER JOIN cv
ON ef.id = cv.EngagementFile_Id
RIGHT JOIN sh
ON ac.short_name = sh.a3 OR ac.short_name = sh.a2 OR ac.short_name = sh.a1
WHERE (schedule = 'G21-9A' OR schedule = 'G21-9B') AND sh.EngagementFile_Id = ef.id AND (ac.act_type = 'C' OR ac.act_type = 'H')
AND schedule =
CASE WHEN
(
SELECT cv.[data]
FROM cv
WHERE [id] = 'REPORT_TYPE' AND cv.EngagementFile_Id = ef.id
) LIKE '%VKT%' THEN 'G21-9B' ELSE 'G21-9A' END
AND ((cv.[id] = 'DATUM_AVA' AND cv.[form] = '' AND cv.[group] = ''))
) AS s
PIVOT (
MAX(dataCV)
FOR [CvId] IN ([DATUM_AVA]
)
)AS pvt
Это возвращает следующий результат:
Теперь я хочу добавить еще один столбец в сводной части, также поступает из таблицы cv. Структура этой таблицы выглядит странно. Он имеет следующие столбцы: id, form, group и data.
Идентификаторы, форма и группа столбцов на самом деле являются своего рода уникальным идентификатором, который используется в другом приложении.
Столбец, который я хочу добавить, содержит данные из таблицы cv, где id = RECHTSVORM, а группа и форма пусты.
Запрос, с которым я попытался это следующее:
SELECT *
FROM (
SELECT ClientNumber, ClientName, YearEndDate, schedule, a1, ad1, a2, ad2, a3, ad3,
cv.[id] as CvId,
[dataCV] =
CASE cv.[id]
WHEN 'DATUM_AVA' THEN CONVERT(DATETIME, cv.[data], 112)
WHEN 'RECHTSVORM' THEN cv.[data]
END,
DATEADD(day, 30, [data]) AS Stat_Filing_Date,
To_Be_Filed =
CASE
WHEN DATEADD(day, 30, [data]) < GETDATE() THEN 'Yes'
ELSE 'No'
END
FROM EngagementFiles ef
INNER JOIN ac
ON ef.id = ac.EngagementFile_Id
INNER JOIN cv
ON ef.id = cv.EngagementFile_Id
RIGHT JOIN sh
ON ac.short_name = sh.a3 OR ac.short_name = sh.a2 OR ac.short_name = sh.a1
WHERE (schedule = 'G21-9A' OR schedule = 'G21-9B') AND sh.EngagementFile_Id = ef.id AND (ac.act_type = 'C' OR ac.act_type = 'H')
AND schedule =
CASE WHEN
(
SELECT cv.[data]
FROM cv
WHERE [id] = 'REPORT_TYPE' AND cv.EngagementFile_Id = ef.id
) LIKE '%VKT%' THEN 'G21-9B' ELSE 'G21-9A' END
AND ((cv.[id] = 'DATUM_AVA' AND cv.[form] = '' AND cv.[group] = '')
OR (cv.[id] = 'RECHTSVORM' AND cv.[form] = '' AND cv.[group] = ''))
) AS s
PIVOT (
MAX(dataCV)
FOR [CvId] IN ([DATUM_AVA],
[RECHTSVORM]
)
)AS pvt
Но это дает следующее сообщение об ошибке:
Conversion failed when converting date and/or time from character string.
Я предполагаю, что это происходит потому, что для столбца RECHTSVORM также пытаясь преобразовать cv.data в datetime. Что мне нужно изменить, чтобы запрос мог конвертировать cv.data в datetime для столбца DATUM_AVA?
Что значит добавить дополнительную колонку в ось? Как будет выглядеть этот запрос? – Marijn