Я пытаюсь отобразить данные таблицы из базы данных в моем приложении. Но когда я пытаюсь повернуть запрос на основе требований, я получаю следующую ошибку:
Тип данных операнда nvarchar (max) недопустим для оператора вычитания.
Ниже приведены подробности. Вот мой оригинальный запрос.
select Currency1, Currency2,M.MonthName+'-'+YearName as Month, Price
from tbl_Currency C
inner join tbl_Month M on M.monthID = C.monthid
inner join tbl_Year Y on Y.yearid = C.yearid
where C.monthid in ('7') and C.yearid = '5'
Ниже получен вывод
Ниже приведен формат, необходимый для отображения данных.
Ниже приведен сводный запрос, который я пытался отформатировать.
DECLARE @sql as nvarchar(max) ,
@month1 as NVarchar(max) ,
@year1 as nvarchar(max),
@io as nvarchar(max)
set @month1 = '7';
set @year1 = '2';
set @io = (STUFF((SELECT ',[' + Convert(varchar,M.MonthName+''+YearName,50)+']' from
tbl_Currency C inner join tbl_Month M on M.monthID=C.monthid
inner join tbl_Year Y on Y.yearid=C.yearid
where C.monthid IN (@month1 ) and C.yearid IN ( @year1 ) GROUP BY M.CodeName+''+YearName order by M.CodeName+''+YearName
FOR XML PATH(''), TYPE ).value('.', 'NVARCHAR(MAX)'),1,1,''));
select @sql = 'select * from (select Currency1, Currency2,((M.CodeName) + (YearName)) as Month,price from
tbl_Currency C inner join tbl_Month M on M.monthID=C.monthid
inner join tbl_Year Y on Y.yearid=C.yearid
where C.monthid = (3) and C.yearid = (2) ) t
PIVOT (
MAX(amount)
FOR Month IN ('+@io+' )
) As pivot_table';
EXEC SP_EXECUTESQL @sql
Ниже приведен вывод:
Как можно добиться конкатенации - в месяце и году получить имя столбца как Jul-20. Я пробовал приведенный ниже запрос, но получил ошибку - Тип данных операнда nvarchar (max) недопустим для оператора вычитания
select @sql = 'select * from (select Currency1, Currency2,((M.CodeName) + '-' + (YearName)) as Month,price from
tbl_Currency C inner join tbl_Month M on M.monthID=C.monthid
inner join tbl_Year Y on Y.yearid=C.yearid
where C.monthid = (3) and C.yearid = (2) ) t
PIVOT (
MAX(amount)
FOR Month IN ('+@io+' )
) As pivot_table';
Извините за длинный пост. Пытался объяснить все проделанные шаги. Любая помощь будет оценена. Поскольку я новый пользователь, предложите мне улучшить презентацию, если это необходимо.