【问题标题】:merging the lines of a sqlite query合并sqlite查询的行
【发布时间】:2012-07-15 11:23:18
【问题描述】:

我的表格灌溉中有以下行:

CodeIrrigation |CodeSecteur|Date_Irrigation | Cubage |
---------------|-----------|----------------|--------| 
     1         |    2      | 12/04/2012     | 1300   |
---------------|-----------|----------------|--------|
     2         |    3      | 12/04/2012     | 1500   |
---------------|-----------|----------------|--------|  

我想要的结果是:

    CodeIrrigation |CodeSecteur1|CodeSecteur2|Date_Irrigation | 
    ---------------|------------|------------|----------------| 
         1         |    2       |    3       | 12/04/2012     | 

有没有可以返回类似内容的查询?

【问题讨论】:

  • 您使用的是 Sqlite、MySQL 还是 SQL Server?还是三个都行?你能只标记你实际使用的 RDBMS 吗?
  • 关于 SO 做这件事的问题有数百个。看看here。您可以在网站上搜索“pivot”/“unpivot”,它应该会为您提供所需的信息。
  • 你是如何关联这些行的?是否仅按日期(并且该名称可能应该类似于irrigatedOn,列不应以类型为前缀)?你知道大概需要多少个透视列吗?
  • @X-Zero culumns 仅按日期分组,我需要 CodeIrrigation1、CodeIrrigation2、CodeSecteur1、CodeSecteur2,当然还有日期

标签: mysql sql sql-server sqlite


【解决方案1】:

试试这个:

SELECT 
    MIN(CodeIrrigation) AS 'CodeIrrigation', 
    MIN(CodeSecteur) AS 'CodeSecteur1', 
    MAX(CodeSecteur) AS 'CodeSecteur2'
FROM table
GROUP BY Date_Irrigation

【讨论】:

  • 很好,它正在工作,但是如果我想添加另一列呢?例如 CodeIrrigation1 和 CodeIrrigation2?
  • @cascadox,如果这些值像您的示例一样受到限制,那么您必须添加它,例如MIN(CodeIrrigation) as CodeIrrigation1, MAX(CodeIrrigation) AS CodeIrrigation1。请记住GROUP BY 子句。如果这些值不可数并且您需要动态执行此操作,那么如果您使用 SQL Server,则必须使用动态 sql 执行此操作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-07
  • 2018-12-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多