2010-03-01 40 views
2

我有一个税率表,其中NULL实体类型行表示默认税率。根据行中的字段值合并行

Year End | EntityType | RateType | TaxRate 
------------------------------------------ 
2009 |  NULL | Interest |  13 
2009 |  NULL | Other |  8 
2009 |  NULL | Interest |  13 
2010 |  NULL | Other |  9 
2009 | Company | Interest |  15 
2010 | Individual | Other |  6 

我想创建一个Entitytype作为参数的表的存储过程。例如,如果它存在,它将返回该实体类型的税率,否则返回该年的NULL行和ratetype。

即:查询上面的EntityType个人应返回

Year End | EntityType | RateType | TaxRate 
------------------------------------------ 
2009  |  NULL | Interest |  13 
2009  |  NULL | Other |  8 
2009  |  NULL | Interest |  13 
2010  | Individual | Other |  6 

任何人可以提出一个方法,我可以做到这一点?

由于提前,

回答

2
SELECT 
    t1.year_end, 
    t1.entity_type, 
    t1.ratetype, 
    COALESCE(t2.taxrate, t1.taxrate) 
    FROM 
    Rates AS t1 
LEFT JOIN 
    Rates AS t2 ON 
     t1.year_end = t2.year_end 
     AND t2.entitytype IS NULL 
WHERE t1.year_end = @year 
    AND t1.entitytype = @entitytype