【问题标题】:Using IF and Subquery使用 IF 和子查询
【发布时间】:2012-06-02 06:42:13
【问题描述】:

我是 SQL 的初学者。我有一张这样的出勤表:

ID--EID ---- PunchIn --------------------POut
1---101-----'2012-05-01 07:30:00'-----'2012-05-01 10:00:00'
2---101-----'2012-05-01 13:30:00'-----'2012-05-01 19:00:00'
3---102-----'2012-05-01 07:45:00'-----'2012-05-01 17:30:00'
4---103-----'2012-05-01 08:00:00'-----'2012-05-01 18:30:00'

如何编写会产生类似这样的查询:

ID--EID ---- PunchIn --------------------POut
1---101-----'2012-05-01 07:30:00'-----'2012-05-01 19:00:00'
3---102-----'2012-05-01 07:45:00'-----'2012-05-01 17:30:00'
4---103-----'2012-05-01 08:00:00'-----'2012-05-01 18:30:00'

谢谢

【问题讨论】:

  • 您能更具体地说明您要做什么吗?很容易找到适用于您的特定示例的查询,但很难猜出您想要的一般情况。
  • Mark 所说的一切加上 - 你为什么认为你需要'if' 和 'subquery'
  • -1 因为我已经告诉过您您的问题并未说明您要做什么。与其花时间让你的问题更清楚,你只是说答案没有做仍然而不说你正在尝试做什么。先解决你的问题,然后你会得到好的答案。我们不是通灵者。解释问题,展示你尝试过的东西,展示失败的地方,展示你想要发生的事情,举例说明应该如何处理边缘情况。让您的问题清晰明确

标签: mysql if-statement count subquery


【解决方案1】:

好吧,我不确定,但是如果您只想折叠关于同一日期和同一个人的所有拳,您可以使用 group by,因此,如果表名为 PUNCHES:

SELECT ID, EID, MIN(PunchIn), MAX(POut)
FROM PUNCHES
GROUP BY ID, DATE(PunchIn);

【讨论】:

  • 错了,如果有的话是GROUP BY EID
【解决方案2】:
SELECT ID, EID, MIN( PunchIn ) , MAX( POut )
FROM PUNCHES
GROUP BY EID

你可以试试这个。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-09
    • 1970-01-01
    相关资源
    最近更新 更多