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

问题描述 投票:0回答:3

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

SELECT * 
FROM COUNTRYTABLE

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

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

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

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

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

sql db2
3个回答
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是否允许SELECTS没有FROM,但如果他们这样做,你也可以考虑制作一个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;

0
投票

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

EG TSOUNTRI

CODE | COUNTRY
123  | GERMANY
124  | SPAIN

等等。

那么你可以像这样加入:

SELECT *
FROM COUNTRYTABLE
 JOIN COUNTRY ON COUNTRY_CODE = CODE

0
投票

您可以使用DECODE,它是否意味着要做到这一点。

SELECT
    DECODE(COUNTRY_CODE,
        123, 'GERMANY',
        124, 'SPAIN',
        ...
        COUNTRY_CODE) as COUNTRY,
    Column2,
    Column3
FROM countrytable;
© www.soinside.com 2019 - 2024. All rights reserved.