我正在使用IBM DB2的QMF,我有一个简单的查询
up / downtime
我没有给出像美国,德国这样的名字,而是获得123,456的结果,因为我们使用的是国家/地区代码。
没有一个表格会让你得到“德国”的名字,所以我无法加入以获得我想要的结果。
有没有办法将123的值切换/替换为德国?我知道我们可以将它用于具有国家/地区作为国家/地区的列名称,但我不确定查询的结果。
我没有管理权限,我只是一个简单的用户,所以对我来说没有花哨的东西。
我尝试在网上搜索,但我甚至不知道如何说出这个问题。
答案 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;