如何在SQL SELECT查询中替换返回的列值?

时间:2013-07-09 13:55:16

标签: sql database select oracle10g

我不确定如何命名标题,所以提前抱歉。

无论如何,我有以下SQL SELECT查询(Oracle)来搜索特定的请求状态:

SELECT ib.incident_id,
       ib.incident_status_id
  FROM cs_incidents_all_b ib, cs_incidents_all_tl it
  WHERE ib.incident_id = it.incident_id
   AND ib.incident_status_id IN (
    SELECT st.incident_status_id
      FROM cs_incident_statuses_tl st
      WHERE st.NAME IN
             ('Accept Order',
              'Order Accepted',
              'Address Retrieved',
              'Analyze',
              'Entered',
              'Information Retrieved',
              'Retrieve Address',
              'Retrieve Information',
              'Returned'));

目前,在运行此查询时,我在最后一列( incident_status_id )中获得以下输出:103

这个数字是 cs_incident_statuses_tl 表格中的一个关键字,在该表格中,有一个列namned name ,其中包含一个明文字符串,在此案例'分析'。

如何修改上面的SELECT查询,以便在运行时,返回不会显示103,而是“分析”'代替?我尝试过尝试各种JOIN,但我还没有找到一种很好的方式来呈现明文说明。

非常感谢任何帮助,提前谢谢!对不起,如果问题愚蠢,SQL远非我的强项。 :)

2 个答案:

答案 0 :(得分:1)

有点笨拙,但试试

SELECT ib.incident_id,
       ib.incident_status_id,
       (    SELECT st.NAME
            FROM cs_incident_statuses_tl st
            WHERE st.incident_status_id = ib.incident_status_id
       ) StatusName
  FROM cs_incidents_all_b ib, cs_incidents_all_tl it
  WHERE ib.incident_id = it.incident_id
   AND ib.incident_status_id IN (
    SELECT st.incident_status_id
      FROM cs_incident_statuses_tl st
      WHERE st.NAME IN
             ('Accept Order',
              'Order Accepted',
              'Address Retrieved',
              'Analyze',
              'Entered',
              'Information Retrieved',
              'Retrieve Address',
              'Retrieve Information',
              'Returned'));

答案 1 :(得分:1)

cs_incidents_all_tl未在您的查询中使用,我在此查询中将其删除:

SELECT ib.incident_id,
   ib.incident_status_id,
   st.NAME
FROM cs_incidents_all_b ib
INNER JOIN cs_incident_statuses_tl st ON st.incident_status_id=ib.incident_status_id
WHERE st.NAME IN
         ('Accept Order',
          'Order Accepted',
          'Address Retrieved',
          'Analyze',
          'Entered',
          'Information Retrieved',
          'Retrieve Address',
          'Retrieve Information',
          'Returned'));