2015-01-27 3 views
0

Я делаю какое-то приложение, и мне нужно несколько строк из хранимой процедуры. И мне нужно вставить их в Datatable. Так вот мой вопрос:Недопустимое имя столбца MSSQL 2008 с PIVOT

WITH OrderedResults AS (select ROW_NUMBER() OVER (ORDER BY tert) AS 'RowNumber', tert, kert, ktgszalsz,szlasz, szlanev from dbo.[func_karton]('','5000','99999999999','0','99999999999','1','99999999999','2014-01-01','2014-01-31') where ktgszalsz in (61,611,6211,6311,6411,6511,6611,6711,6811) union select ROW_NUMBER() OVER (ORDER BY tert) AS 'RowNumber', tert, kert, '0' AS ktgszalsz,szlasz, szlanev from dbo.[func_karton]('','5000','99999999999','0','99999999999','1','99999999999','2014-01-01','2014-01-31') where ktgszalsz not in (61,611,6211,6311,6411,6511,6611,6711,6811)) 
SELECT ROW_NUMBER() OVER (ORDER BY a61) AS 'Row',* FROM (
    SELECT * FROM ( 
     SELECT LTRIM(szlanev) as 'name',('a'+ktgszalsz) as ktgszalsz, SUM(tert)- sum(kert) as 'value' FROM OrderedResults group by ktgszalsz,szlanev 
    ) a 
    pivot( 
     max(value) for ktgszalsz in (a0,a61,a611,a6211,a6311,a6411,a6511,a6611,a6711,a6811) 
    ) piv 
)as b WHERE Row BETWEEN 1 AND 5 

Когда я запускаю его у меня есть сообщение об ошибке:

Error: Invalid column name 'Row' 

Но когда я запускаю его без условия WHERE У меня есть столбец «Row».

ответ

1

Вы можете»использовать псевдонимы в WHERE пункте, поэтому используйте следующее:

SELECT * FROM (
    SELECT ROW_NUMBER() OVER (ORDER BY a61) AS [Row] <...> 
) WHERE [Row] BETWEEN 1 AND 5 
+0

, что не работает слишком:/измененное название слишком – radonyzsolt

+0

Да у меня есть:«SELECT row_number() OVER (ORDER BY A61) AS 'Row', * FROM " – radonyzsolt

+0

не работает:/Я изменил имя на что-то другое, но оно тоже не работает. – radonyzsolt

Смежные вопросы