sql - 从派生表中选择sql异常

标签 sql sql-server sql-server-2005

我正在尝试从 MSSQL SERVER 2005 中的派生表执行 select 语句,如下所示:

我试图解决的问题是存在重复的行,但它们在 DATE 字段中以秒为单位不同,但我会考虑分钟

ID  DATE
1   08:20:00
1   08:20:01
2   09:21:00
5   10:00:00
5   10:00:01

我想采用不同的 ID 值,并按日期排序,但当我按日期排序时,我需要包含日期字段。所以我无法在一列上明确选择。

派生表查询(本身可以完美检索重复项)

SELECT  p.[SICIL] AS ID, h.[ZAMAN_TRH] AS ZAMAN_TRH
FROM [RF_BIO].[dbo].[PERSONEL] p,  [RF_BIO].[dbo].[HAREKETLER] h  
WHERE h.[ZAMAN_TRH] > '2013-05-27T00:00:00.000' AND h.[YON]= 2 AND 
(p.[KARTNO] = h.[KARTNO] OR p.[SICIL]= h.[SICIL]) 
ORDER BY h.[ZAMAN_TRH] DESC 

使用派生表的查询:

SELECT DISTINCT [SICIL] 
FROM ( SELECT  p.[SICIL] AS SICIL, h.[ZAMAN_TRH] AS ZAMAN_TRH  
FROM [RF_BIO].[dbo].   [PERSONEL] p,  [RF_BIO].[dbo].[HAREKETLER] h 
WHERE h.[ZAMAN_TRH] > '2013-05-27T00:00:00.000' AND h.[YON]= 2 AND 
(p.[KARTNO] = h.[KARTNO] OR p.[SICIL]= h.[SICIL]) ORDER BY h.[ZAMAN_TRH] DESC ) AS LAST

这让我在 Java 中遇到 sql 异常

java.sql.SQLException:  
    at net.sourceforge.jtds.jdbc.SQLDiagnostic.addDiagnostic(SQLDiagnostic.java:372)
    at net.sourceforge.jtds.jdbc.TdsCore.tdsErrorToken(TdsCore.java:2893)
    at net.sourceforge.jtds.jdbc.TdsCore.nextToken(TdsCore.java:2335)
    at net.sourceforge.jtds.jdbc.TdsCore.getMoreResults(TdsCore.java:638)
    at net.sourceforge.jtds.jdbc.JtdsStatement.executeSQLQuery(JtdsStatement.java:505)
    at net.sourceforge.jtds.jdbc.JtdsStatement.executeQuery(JtdsStatement.java:1427)

感谢您的帮助。

最佳答案

在 ORDER BY 子句中使用带有聚合函数的 GROUP BY 子句

SELECT p.[ID] AS ID
FROM [RF_BIO].[dbo].[PERSONEL] p, [RF_BIO].[dbo].[HAREKETLER] h  
WHERE h.[DATE] > '2013-05-27T00:00:00.000' AND h.[YON]= 2
  AND (p.[KART] = h.[KART] OR p.[ID]= h.[ID])
GROUP BY p.[ID]
ORDER BY MAX(h.[DATE]) DESC 

SQLFiddle 上的简单演示

SELECT p.[SICIL] AS SICIL
FROM [RF_BIO].[dbo].[PERSONEL] p, [RF_BIO].[dbo].[HAREKETLER] h 
WHERE h.[ZAMAN_TRH] > '2013-05-27T00:00:00.000' AND h.[YON]= 2
  AND (p.[KARTNO] = h.[KARTNO] OR p.[SICIL]= h.[SICIL])
GROUP BY p.[SICIL]  
ORDER BY MAX(h.[ZAMAN_TRH]) DESC

平面图

enter image description here

关于sql - 从派生表中选择sql异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16767545/

相关文章:

sql - 如何选择 SQL 服务器?

sql-server-2005 - 如何在 SQL Server 2005 中更新插入(更新或插入)

sql-server - 如何在 SQL Server 中查找运行跟踪?

asp.net - 独立的应用服务器和数据库服务器

SqlExceptionHelper : ERROR: function count(character varying, 整数)不存在

sql - 如何做相当于 "limit distinct"?

sql-server - 在 Web 服务器上运行 SQL Server

sql - 如果field为null,则拉取某些字段;否则,拉取其他字段

php - MS SQL CONCAT 与 "+"查询差异(使用 Doctrine 2)

sql - 从sql的列中选择前3条记录