【问题标题】:Use of group_concatgroup_concat 的使用
【发布时间】:2016-03-27 03:25:06
【问题描述】:

我有一个名为 LOPList 的表:

我希望结果是:

LOPID | EMP ID | TIME START (LOPStatus = 'Y') | TIME END (LOPStatus = 'N')

2     | 6      | 2016-03-24T20:05:27+00:00    | 2016-03-24T20:14:41+00:00

5     | 6      | 2016-03-24T20:07:59+00:00    | 2016-03-24T20:13:11+00:00

【问题讨论】:

    标签: php mysql sql


    【解决方案1】:

    试试:

    select LOPID,EmpId,
    max(case when LOPStatus='Y' then TimeUpdated end) as time_start,
    max(case when LOPStatus='N' then TimeUpdated end) as time_end  
    from LOPList where JobID= 22 group by LOPID;
    

    【讨论】:

    • 当我输入 SQL 时似乎看起来不错。但不在php页面中。 & 我如何添加 WHERE JobID= 22
    • @MohammedKumel:我在查询中添加了where clause。检查一次
    • 似乎不起作用,当我添加 WHERE 时,我也在 SQL 中尝试过。 MYSQL 错误:` #1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 4 行的 'WHERE JobID = '22' LIMIT 0, 25' 附近使用正确的语法`
    • from 之前错误地添加了where clause,这就是您收到错误的原因。再次检查
    • 如果你要限制记录,你应该把Limit clause放在group by LOPID之后
    【解决方案2】:

    选择 list.LOPID,list.EmpID 作为“EMP ID”, listY.TimeUpdated 为“TIME START (LOPStatus = 'Y')”,listN.TimeUpdated 为“TIME END (LOPStatus = 'N')” 从 (SELECT DISTINCT LOPID,EmpID FROM [TestDB].[dbo].[LOPList]) 作为列表, (从 [TestDB].[dbo].[LOPList] 中选择 LOPID、LOPStatus、TimeUpdated,其中 LOPStatus = 'Y')listY, (从 [TestDB].[dbo].[LOPList] 中选择 LOPID、LOPStatus、TimeUpdated,其中 LOPStatus = 'N')listN WHERE listY.LOPID = list.LOPID 和 listN.LOPID = list.LOPID;

    你应该知道一些sql语言基础知识,这里你应该使用'DISTINCT'语句,谢谢,希望能给你一些帮助

    【讨论】:

      猜你喜欢
      • 2014-03-09
      • 2021-04-23
      • 2012-10-24
      • 1970-01-01
      • 2012-07-28
      • 2013-07-02
      • 2011-04-17
      • 2013-11-17
      • 1970-01-01
      相关资源
      最近更新 更多