繁体   English   中英

如何从 sql-query 中的字典表中获取正确的名称

[英]How to get a proper name from the dictionary table in sql-query

我陷入了下一个情况。 我有两个表,表“数据”和表“字典”。

表格“数据”的每一行都是关于产品的信息。 在这一行中存在 10 列不包括其他列,分别命名为“cat1”、“cat2”...“cat10”。 这些列可能包含 INT 值或 NULL 值。

“数据”表如下所示:

product_id 产品名称 价格 猫1 猫2 ... 猫 10
13 香蕉 3.5 12 32 ... 无效的

“字典”表包含每个类别的专有名称:

cat_id 猫名
12 水果
32

我的主要目标是编写一个如下所示的查询:

产品名称 类别
香蕉 水果,吃

我尝试使用 CONCAT(),但如果我们有 NULL 值,它就不起作用。 谁能帮我创建 SQL 语句来获取它?

首先应该将列cat1 .. cat10 转为多行,然后加入Dictionary表,最后使用LISTAGG聚合结果:

WITH cte AS (
  SELECT *
  FROM Data d
  UNPIVOT (cat_id for category IN (cat1, cat2, ... cat10)
)
SELECT c.product_id, c.product_name, LISTAGG(d.cat_name, ',') AS categories
FROM cte c
JOIN "Dictionary" d
  ON c.cat_id = d.cat_id
GROUP BY c.product_id, c.product_name;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM