根据3个int列选择描述

时间:2012-09-12 20:36:09

标签: sql sql-server sql-server-2008

我有一个包含字段ID,department_code,sub_department_code,class_code,desc_text

的表

当sub_department_code和class_code字段为null时,desc_text具有部门的名称,当department_code和sub_department_code不为null但class_code为null时为sub_department名称,而当class_code为非null时为class的名称。 / p>

我的问题是我有另一个表,其中包含上表中的id,但我想选择department_code,desc_text(部门),sub_department_code,desc_text(sub_department)等字段

我尝试了一些方法,但我不确定如何搜索这个问题。

我有以下两个表: 层次
ID,department_code,subdept_code,class_code
1 1 null null
2 1 1 null
3 1 1 1
4 2 1 null
Hierarchy_detail
ID,hierarchy_id,short_text
1辆车
2 2卡车

hierarchy.id链接到hierarchy_detail.hierarchy_id

有了这个,我有一个包含我想要的数据的表,来自hierarchy.id的fk,我可以链接并获取部门,子部分和类代码,但我在那里获取文本时遇到问题对于每种类型。

1 个答案:

答案 0 :(得分:1)

您希望使用case语句来捕获逻辑。如果我正确阅读,它看起来像这样:

select id, department_code, sub_department_code, class_code,
       (case when sub_department_code is null and class_code is null
             then desc_text
        end) as department_name,
       (case when department_code is not null and sub_department_code is not null and class_code is null
             then desc_text
        end) as sub_department_name,
       (case when class_code is not null then desc_text
        end) as class_name
from t

然后,您可以将此查询用作子查询以加入其他表。