2014-02-11 57 views
1

我正在写一个单元测试的方法用下面的SQLH2DB WITH子句

WITH temptab(
i__id , i__name, i__effective, i__expires, i__lefttag, i__righttag, 
hier_id, hier_dim_id, parent_item_id, parent_hier_id, parent_dim_id, 
ancestor, h__id, h__name, h__level, h__effective, h__expires, rec_lvl) 
AS ( 
    SELECT 
    item.id   as i__id,   
    item.name  as i__name,   
    item.effectivets as i__effective,   
    item.expirests  as i__expires,  
    item.lefttag  as i__lefttag,  
    item.righttag as i__righttag,  
    hier_id,  hier_dim_id,   
    parent_item_id,  
    parent_hier_id,  
    parent_dim_id,  1   as ancestor,  
    hier.id as h__id,  hier.name as h__name, 
    hier.level as h__level,  hier.effectivets as h__effective,  
    hier.expirests as h__expires,  1 as rec_lvl FROM metro.item item,  
    metro.hierarchy hier WHERE item.id = 'DI'  AND hier_id = '69'  AND hier_dim_id= '36' AND hier.id =item.hier_id 
) 
SELECT 
    i__id, i__name, i__effective, i__expires, i__lefttag, 
    i__righttag, hier_id, hier_dim_id, parent_item_id, 
    parent_hier_id, parent_dim_id, ancestor, 
    h__id, h__name, h__level, h__effective, h__expires 
FROM temptab 

该查询返回空集,但我希望1列。

数据是正确的,因为类似的简单查询没有with子句工作正常。

我调查了这个问题,我发现
Sub Query with WITH-CLAUSE in H2DB 但该解决方案没有帮助。

那么,有没有人知道H2支持子句?

提前感谢您的时间。

+0

H2 * *仅支持递归的CTE。它不**支持常规CTE –

回答

1

根据以下几点:h2 database grammar

看起来像H2数据库不支持WITH条款,除了对递归查询的实验性支持:h2 recursive queries

+1

它受支持,但仅用于递归查询:http://www.h2database.com/html/advanced.html#recursive_queries –