首页 > 解决方案 > 如何将值从列复制到postgresql中不存在的列

问题描述

我有一张这样的桌子:

在此处输入图像描述

我想将第一列中的值复制到不存在的“数量”列中,如果它们具有不同的数据类型,我该怎么做?

我最初想要的是当第一列的值为 0 时,列 qty 应该为空白或空,而不是 [null],我通过这样的代码实现了这一点:

SELECT round(od_qty),
CASE when round(od_qty) = 0 Then ''
END qty,
FROM vodetl 

现在我的问题是其他不为 0 的值怎么办,我如何将这些值复制到列 qty?我试过这个:

SELECT round(od_qty),
CASE when round(od_qty) = 0 Then ''
ELSE round(od_qty)
END qty,
FROM vodetl 

但由于它显示的数字数据类型

ERROR:  invalid input syntax for type numeric: ""
LINE 2: CASE when od_item = 'C' and round(od_price,2) = 0.00 Then ''

我如何在不更改第一列的数据类型的情况下做到这一点?

标签: pythonsqldatabasepostgresql

解决方案


表达式的所有分支CASE必须具有相同的类型。因此,如果要将空字符串显示为其中一个值,则另一个数值也应转换为文本。考虑:

SELECT ROUND(od_qty),
       CASE WHEN ROUND(od_qty) = 0 THEN '' ELSE ROUND(od_qty)::text END qty,
FROM vodetl;

推荐阅读