首页 > 解决方案 > 用另一个文本替换输出行文本而不更新或插入

问题描述

我有一个看起来像这样的查询:

SELECT 
    x.ans, 
    COUNT(*) AS num_ans
FROM 
    ans x, 
    get_fit('5')
GROUP BY 
    x.ans, 
    get_fit.getfit
ORDER BY 
    x.ans ASC;

输出:

  id | num_ans
 ----+---------------
  X  |  5
  Z  |  7

但我想分别用 AName 和 BName 更改 X 和 Z 而不插入或更新表。我该怎么做?

标签: sqlpostgresql

解决方案


实现这一目标的一种选择是CASE命令。您的查询可能如下所示:

SELECT 
    x.ans as original_id,
    CASE WHEN x.ans='X' THEN 'AName'
         WHEN x.ans='Z' THEN 'BName'
         ELSE x.ans
    END as modified_id,
    COUNT(*) AS num_ans
FROM 
    ans x, 
    get_fit('5')
GROUP BY 
    x.ans, get_fit.getfit
ORDER BY 
    x.ans ASC;

推荐阅读