2014-09-19 101 views
-3

我有这样的SQL查询:SQL查询与内选择

SELECT DISTINCT 
    [Card NO], 
    [User Name], 
    (
    SELECT 
     MIN(DateTime) AS [Enter Time], 
     MAX(DateTime) AS [Exit Time], 
     MAX(DateTime) - MIN(DateTime) AS [Inside Hours] 
    FROM 
     ExcelData 
) 
FROM 
    ExcelData 
GROUP BY 
    [Card NO], [User Name], DateTime 

表模式:CardNO | UserName | DateTime

我试着去执行它,但没有成功。我说这是一个无效的查询。 任何人都可以找到这个查询中有什么问题吗?

+2

它是MySQL,SQL Server或MS Access吗? – raina77ow 2014-09-19 08:08:42

+1

'MySQL','SQL Server'和'MS Access'不一样。你真的使用哪一个?基于标识符分隔符('['和']')这是SQL Server – Pred 2014-09-19 08:09:58

+0

MS Access会更好 – eviB 2014-09-19 08:11:25

回答

0

这并不能解决您在保留关键字和列名方面可能遇到的问题,但应该是一个有效的查询。您正在使用select查询作为列名称。

SELECT 
    [Card NO], 
    [User Name], 
    MIN(DateTime) AS [Enter Time], 
    MAX(DateTime) AS [Exit Time], 
    MAX(DateTime) - MIN(DateTime) AS [Inside Hours] 
    FROM 
    ExcelData 
    GROUP BY 
    [Card NO], [User Name] 
+0

我不认为它与保留字有任何冲突,因为当我执行时:SELECT DateTime从ExcelData中,它显示DateTime列。但是当我执行你的查询时,它也不起作用。 – eviB 2014-09-19 08:24:11

+0

尝试删除不同的关键字。你的错误信息是什么? – irene 2014-09-19 08:25:49

+0

现在它被执行但没有结果。空表 – eviB 2014-09-19 08:30:02

0

您正在按DateTime进行分组,这是一个保留关键字,并且您不选择列DateTime。你确实在DateTime上选择了聚合,这意味着你不应该对它进行分组。 @irene得到了正确的答案。