2013-07-09 52 views
0

我不确定如何命名标题,所以提前抱歉。如何在SQL SELECT查询中替换返回的列值?

不管怎么说,我有以下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 ,有一个明确的文本字符串,在这种情况下,“安alyze”。

如何修改上面的SELECT查询,以便它在运行时返回不显示103而是分析?我尝试过使用各种JOIN,但我还没有找到一种好的方法来提供明文描述。

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

回答

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')); 
+0

似乎完全正常工作,非常感谢! – BeeDog

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'));