创建串联结果表

Posted

技术标签:

【中文标题】创建串联结果表【英文标题】:Creating concatenated results tables 【发布时间】:2021-10-01 00:53:33 【问题描述】:

我有类似的表 A:

我有像 B 这样的表:

我想要一个在必要时连接列并合并行的结果表,例如:

我尝试使用 Union,但它并没有完全满足我的需求。有没有其他有效的方法来达到这个结果。

【问题讨论】:

请编辑您的问题并以文本形式发布表格。请发布您尝试过的查询。 共享创建表和插入数据的脚本。图像不起作用。 Sqlite 和 mysql 是两个不同的产品。删除了冲突的产品标签。请添加您实际使用的那个。 【参考方案1】:

如果 SQLite 支持 FULL 连接,这将很容易解决,但它不支持。

首先使用 UNION ALL 创建一个结果集,其中包含 2 个表的所有行以及额外的列以涵盖水果和蔬菜,然后聚合,这样在 'tomato' 这样的情况下,您将只有 1 行:

SELECT Fruit_Veggie, 
       SUM(Count_Fruit) Count_Fruit,
       SUM(percent_fruit) percent_fruit,
       SUM(Count_Veggie) Count_Veggie,
       SUM(percent_Veggie ) percent_Veggie 
FROM (
  SELECT Fruit Fruit_Veggie, count Count_Fruit, percent percent_fruit, 0 Count_Veggie, 0 percent_Veggie 
  FROM TableA
  UNION ALL
  SELECT Veggies, 0, 0, count, percent
  FROM TableB
)
GROUP BY Fruit_Veggie

【讨论】:

【参考方案2】:

您需要进行完全联接或不同的联合。您知道这一点是因为您有一个番茄行,其中包含两个表中的值。这将为您提供空值,您将使用合并将其变为 0(零)。这是作业吗?

【讨论】:

感谢您的评论,但我也了解一些聪明人已从问题中删除了 sqlite 标签。包含两个标签是有原因的。【参考方案3】:

您已粘贴图像。因此,我们很难复制文本和创建脚本。您应该在提问时分享脚本。

UNION 有什么问题,请分享。我认为下面的查询应该有效。但也请与工会分享您的问题。

SELECT Fruit Fruit_Veggie, Count count_Fruit, percent percent_Fruit, 0 Count_Veggie, 0 pecent_Veggie FROM A
UNION
SELECT veggie, 0, 0, count, percent from B

【讨论】:

因为tomato。他希望fruitveggie 表中的行并排显示,而union 将显示两行tomato。可能union 成为子查询然后group by 同意。为了尝试,我需要数据脚本,我不会自己为这个问题创建脚本。

以上是关于创建串联结果表的主要内容,如果未能解决你的问题,请参考以下文章

从串联字符串创建类

如何创建一个函数来接受串联的源值 - Excel VBA

Oracle - ORA-01489:字符串连接的结果太长 [重复]

如何串联。 (点)在javascript中带有数字

mysql创建临时表,将查询结果插入已有表中

为啥这个 SQL 存储过程需要创建一个临时表才能工作(返回结果)?