sql - 根据条件从 PostgreSQL 查询更改在 PBI 中导入的列的值
问题描述
我需要一些帮助,我不精通 SQL,我正在尝试解决一些 PBI 的问题。
情况如下,我的 PBI 连接到 PostgreSQL 以获取其表的数据,但在其中一个表上,我们有一些行分类错误,这导致分析出现一些问题。由于数据库上的行错误,我已经联系了数据库经理,但是他不想更改它们以修复它。所以我必须做点什么。
这是我在 PBI 中的表:
[PBI 中的表格]
在该表中,“subgrupo”列应仅包含给定“descpro”的“passaros”,但它们被错误分类为“suplementos”。
在 PBI 的电源查询中,我有以下代码从 Postgres 构建上述表
SELECT
internalproductid AS CODPRO
,ean AS EAN
,ncm AS NCM
,productdesc AS DESCPRO
,suppliername AS FORNECEDOR
,CASE
WHEN UPPER(TRIM(productbrand)) = 'PETZ' THEN 'MP'
ELSE 'OL'
END AS MarcaPropria
,COALESCE(productbrand,' ') AS MARCA
,CASE
WHEN productstatus LIKE '1' THEN 'FL'
ELSE 'AT'
END AS FORA_LINHA
,N1 AS FAMILIA
,N2 AS GRUPO
,N3 AS SUBGRUPO
,buyergroup AS GRUPO_COMPRAS
,N4 AS Categoria_Modular
FROM tb_product
我在“N3 AS SUBGRUPO”行需要一些额外的代码,它应该是这样的:
如果 N3 是“SUPLEMENTOS”并且 productdesc 包含“ZOOTEKNA BST”,它应该将 Passaros 作为“SUBGRUPO”,否则它应该按原样带来 N3(就像它现在所做的那样)。
我相信这会修复该表,但是我不知道如何在 Postgres 中构造它。我在想。
CASE
WHEN producdesc LIKE '%ZOOTEKNA BST%'
AND N3 like 'Suplementos'THEN 'Passaros'
ELSE N3
END AS SUBGRUPO
甚至不确定这是否有效并且不确定如何使用通配符(我相信 '%ZOOTEKNA BST%' 是不正确的)。有人可以帮帮我吗?上面的代码会起作用吗?如果不是,我应该怎么做?
解决方案
推荐阅读
- javascript - 在哪里可以检索 Cognito 身份池的公钥?
- jenkins - SonarQube 配置问题
- angularjs - 使用拼接删除数组在角度js中无法正常工作?
- php - 如何使用php使用session.gc_maxlifetime正确保持用户登录一段时间
- node.js - 如何管理基于消息队列侦听器 (NodeJS) 的并行 HTTP 请求
- php - 使用 PHP 更改数组的就地值
- python - 具有浮点值的 Numpy 2d 数组在单行中找到最大值并存储在另一个数组中
- python - 多图像输入到python中的CNN模型
- python - dask 如何处理大于内存的数据集
- python - python从txt文件中读取格式化数据的快速方法