mysql - 在mysql View 中将多行合并为单行

标签 mysql sql sql-view

我有一个 mysql View ,其中 1 列在 4 行上重复,但另一列具有不同的值。我想通过给列自定义名称将所有 4 行合并为 1 行。

enter image description here

示例:

我使用不同的 Nutr_ValNutr_No 在 4 行中重复了 Long_Desc。我想合并所有 4 行,以便表格看起来像

NDB_No | Nutr_No | Nutr_Val | Long_Desc | PROCNT | FAT | CHODCDF | ENERC_KCAL

所以我在最后 4 列中调整了 Nutr_Val

最佳答案

这可以通过条件聚合来解决:

SELECT
    t.nbd_no,
    t.nutr_no,
    t.nutr_val,
    t.long_desc,
    MAX(CASE WHEN t.tagname = 'PROCNT'     THEN t.fdgrp_cd END) PROCNT,
    MAX(CASE WHEN t.tagname = 'FAT'        THEN t.fdgrp_cd END) FAT,
    MAX(CASE WHEN t.tagname = 'CHODCDF'    THEN t.fdgrp_cd END) CHODCDF,
    MAX(CASE WHEN t.tagname = 'ENERC_KCAL' THEN t.fdgrp_cd END) ENERC_KCAL 
FROM mytable t
GROUP BY
    t.nbd_no,
    t.nutr_no,
    t.nutr_val,
    t.long_desc

关于mysql - 在mysql View 中将多行合并为单行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54498722/

相关文章:

mysql - 如何修复 XML 导入 ShopWare 5.4.6 期间出现的 'Supplier not found' 错误

sql - 在 SQL 中向 View 添加新列

MYSQL GROUP_CONCAT 表必须有自己的别名

mysql - 如何使用ibatis检查更新语句中是否为空?

mysql - SQL连接表到 self 发现差异

php - 管理 PHP 和 MySQL 之间的日期格式差异

sql - 我应该使用 LIKE 来查询具有 400 万行的表吗

sql - 选择 View 的列

java - 使用 JPA 时如何在没有主键的情况下映射数据库 View

Mysql查询显示从a到p范围内的名称