【问题标题】:How to show table result column and show it on rows如何显示表格结果列并将其显示在行上
【发布时间】:2018-06-13 08:25:23
【问题描述】:

有人可以帮我创建一个表格,在其中我可以将其他行用作列吗?

我的示例数据库如下所示:

|    NAME | DATE             |    TIME     |TYPE |
|    john    | 03-05-2017  |    06:00    | AM IN
|    john    | 03-05-2017  |    11:00    | AM OUT
|    john    | 03-05-2017  |    13:00    | PM IN
|    john    | 03-05-2017  |    16:00    | PM OUT

| john | 03-06-2017  | 06:00 | AM IN
| john | 03-06-2017  | 11:00 | AM OUT

| john | 03-07-2017  | 06:00 | AM IN
| john | 03-07-2017  | 11:00 | AM OUT
| john | 03-07-2017  | 13:00 | PM IN
| john | 03-07-2017  | 16:00 | PM OUT

我怎样才能在 PHP 表中这样显示它:

|    DATE      | AM IN  |AM OUT   |    PM IN    | PMOUT
03-05-2017   06:00     |11:00        |   13:00      |16:00
03-06-2017   06:00     |11:00        |   NULL       | NULL
03-07-2017   06:00    |11:00         |    13:00      |16:00

我已经上传了图片,以便更好地解释它

【问题讨论】:

  • 您想创建HTML表格、Excel表格还是您介意什么样的表格?你还试过什么?请举个例子。
  • 只是从该数据库中获取的普通 html 表先生,该示例看起来像上传的图像的右侧部分,非常感谢!\
  • 您是否正在寻找一个 sql 查询来产生所需的结果?
  • 我们很乐意帮助您解决具体问题,但知道我们无法判断您的具体问题是什么。你尝试过什么来完成你想做的事情?您在查询、表格呈现或数据分组方面有问题吗?一点提示:请阅读how to as page,了解有关stackoverflow 的好问题。

标签: php tabular


【解决方案1】:

我认为您只需要一个透视查询:

SELECT
    NAME,
    DATE,
    MAX(CASE WHEN TYPE = 'AM IN'  THEN TIME END) AS AM_IN,
    MAX(CASE WHEN TYPE = 'AM OUT' THEN TIME END) AS AM_OUT,
    MAX(CASE WHEN TYPE = 'PM IN'  THEN TIME END) AS PM_IN,
    MAX(CASE WHEN TYPE = 'PM OUT' THEN TIME END) AS PM_OUT
FROM yourTable
GROUP BY
    NAME, DATE;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-29
    • 1970-01-01
    • 1970-01-01
    • 2014-03-01
    相关资源
    最近更新 更多