我想用自己的选择值替换Query中的结果

时间:2018-02-28 20:43:32

标签: sql db2

我正在使用IBM DB2的QMF,我有一个简单的查询

up / downtime

我没有给出像美国,德国这样的名字,而是获得123,456的结果,因为我们使用的是国家/地区代码。

没有一个表格会让你得到“德国”的名字,所以我无法加入以获得我想要的结果。

有没有办法将123的值切换/替换为德国?我知道我们可以将它用于具有国家/地区作为国家/地区的列名称,但我不确定查询的结果。

我没有管理权限,我只是一个简单的用户,所以对我来说没有花哨的东西。

我尝试在网上搜索,但我甚至不知道如何说出这个问题。

3 个答案:

答案 0 :(得分:1)

我会制作表格,但是..如果你没有访问权限,你可以使用CASE语句:

SELECT 
    CASE WHEN country_Code=123 THEN 'Germany'
        WHEN country_Code =124 THEN 'Spain'
        ELSE country_Code
        END as Country,
    Column2,
    Column3
FROM CountryTable;

我不记得DB2中的CTE是否允许没有FROM的SELECTS,但如果他们这样做,你也可以考虑制作一个CTE并加入另一个选项:

WITH country AS
(
    SELECT 123 as country_code, CAST('germany' as varchar(50)) as country_name
    UNION ALL SELECT 124, 'Spain'
    UNION ALL SELECT 125, 'Portugal'
)
SELECT
    country.country_name,
    countryTable.column2,
    countryTable.column3
FROM
    countryTable
    LEFT OUTER JOIN country 
        ON countryTable.country_code = country.country_code;

答案 1 :(得分:0)

理想情况下,您需要一个查找表

e.g。 COUNTRY

CODE | COUNTRY
123  | GERMANY
124  | SPAIN

等等。

然后你可以这样加入:

SELECT *
FROM COUNTRYTABLE
 JOIN COUNTRY ON COUNTRY_CODE = CODE

答案 2 :(得分:0)

你可以使用DECODE,意思就是这样做。

SELECT
    DECODE(COUNTRY_CODE,
        123, 'GERMANY',
        124, 'SPAIN',
        ...
        COUNTRY_CODE) as COUNTRY,
    Column2,
    Column3
FROM countrytable;