【问题标题】:SQL Get Distinct ID but with newest dateSQL获取不同的ID,但日期最新
【发布时间】:2014-10-27 20:05:01
【问题描述】:

您好,我想获得不同的 FireUPRN,但日期是最新的 (FRADate)。

问题:

我不断收到错误 -

*Msg 241, Level 16, State 1, Line 4
Conversion failed when converting datetime from character string.
Warning: Null value is eliminated by an aggregate or other SET operation.*

代码:

SELECT *

FROM TblFire 
inner join (
SELECT Max(FRADate) as FireDateID, 
FRADate 
FROM TblFire GROUP BY FRADate)
FireDateID
ON FireDateID.FireDateID = TblFire.FireUPRN

【问题讨论】:

标签: sql database sql-server-2005


【解决方案1】:

您的查询很混乱,取日期列的最大值并将其称为 id。如果没有表格布局,我认为这就是您真正想要的:

SELECT f.*
FROM TblFire f INNER JOIN
     (SELECT FireUPRN, MAX(FRADate) as FRADate
      FROM TblFire
      GROUP BY FireUPRN
     ) fmax
     ON f.FRADate = fmax.FRADate and f.FireUPRN and fmax.FireUPRN;

【讨论】:

  • 当我运行 SELECT DISTINCT FireUPRN FROM TblFire f INNER JOIN (SELECT Max(FRADate) as FRADateID, FRADate FROM TblFire GROUP BY FRADate ) fmax ON f.FireUPRN = fmax.FRADateID 我得到同样的错误“从字符串转换数据时间时转换失败)
【解决方案2】:

试试这个:(ID 是 TblFire 的主键)

SELECT * FROM TblFire  t1
JOIN 
(
   SELECT ID, MAX(FRADate) AS FRADate
   FROM TblFire
   WHERE FRADate is not null 
   GROUP BY FRADate
) t2
ON T1.FRADate = t2.FRADate
AND t1.ID = t2.ID

【讨论】:

  • 遗憾的是,写它的人(不是我)没有 ID 字段。
  • 没有唯一字段,但我可以添加一个 - 现在只需将其从服务器复制到我的本地 PC,然后我就可以玩桌子了。
【解决方案3】:

有时它比看起来更容易......

SELECT FireUPRN, Max(FRADate) as FRADate
FROM TblFire 
GROUP BY FireUPRN

【讨论】:

    猜你喜欢
    • 2019-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-07
    • 2016-02-23
    • 1970-01-01
    相关资源
    最近更新 更多