我試圖將IBM DB2查詢轉換爲SQL Server查詢。我不是很熟悉與AS結構。SQL Server的附近有語法錯誤('在遞歸查詢
DB2查詢(工作)是:
with ZoneList (id, name, parent_name, parent_id, level) as
(select id, name, '', parent_id, 1 as level
from products.zones where id = 1
union all
select z.id, z.name, l.name, z.parent_id, level + 1
from products.zones z, ZoneList l
where z.parent_id = l.id)
select id, name || ' (' || parent_name || ')' as description
from ZoneList
where level = 4
order by ZoneList.name
和我的SQL Server版本是:
with ZoneList (id, name, cast((parent_name) as varchar(45)), parent_id,
level) as
(select id, name, cast(('') as varchar(45)), parent_id, 1 as level
from products.zones where id = 1
union all
select z.id, z.name, cast((l.name) as varchar(45)), z.parent_id, level + 1
from products.zones z, ZoneList l
where z.parent_id = l.id)
select id, name + ' (' + parent_name + ')' as description
from ZoneList
where level = 4
order by ZoneList.name
我爲了避免不兼容類型的錯誤增加了石膏,但現在我得到語法錯誤附近「(」
,而不是'投((PARENT_NAME)爲varchar(45))'在第一線,只需用''parent_name'--與ZoneList(ID,姓名,PARENT_NAME,PARENT_ID, 級)爲' 。你說什麼列名將是,所以你不需要類型聲明或演員。 – ps2goat