【发布时间】:2013-01-16 02:19:25
【问题描述】:
女士们,先生们,
我需要编写一个从视图中获取数据的查询,但我不知道该怎么做。问题是实际上没有键,我关心的两个字段将控制我需要检索的行。
视图看起来像这样:
Category columna columnb uploaddate
-----------------------------------------------------
a value value 1/30/2013 04:04:04:000
a value value 1/29/2013 04:04:04:000
b value value 1/28/2013 01:23:04:000
b value value 1/30/2013 04:04:04:000
b value value 1/30/2013 04:04:04:000
c value value 1/30/2013 01:01:01:000
c value value 1/30/2013 01:01:01:000
我需要检索的是每个唯一类别的所有行和最新的uploaddate。因此,在上面的示例中,我将获得类别 a 的 1 行,其中包含最新的uploaddate。类别 b 将有 2 行日期为 2013 年 1 月 30 日。类别 c 也有两行。
我还需要比较上传日期,而不是时间。因为加载可能需要几秒钟。我试图使用最大日期,但它只会将时间抓取到第二个。
任何指导/想法都会很棒。
谢谢!
编辑:
这是我到目前为止汇总的内容,我认为它已经接近但它还没有工作,我怀疑这是最有效的方法。
select
*
from
VIEW c
INNER JOIN
(
SELECT
Category,
MAX(CONVERT(DateTime, Convert(VarChar, UploadDate, 101))) as maxuploaddate
FROM
View
GROUP BY
Category,
UploadDate
) temp ON temp.Category = c.Category AND CONVERT(VarChar, UploadDate, 101) = temp.maxuploaddate
问题在于嵌套的 selected 语句,因为它仍在获取类别和上传日期的所有组合。有没有办法在 Category 和 UploadDate 上做一个区分,只是得到最新的组合?
再次感谢
【问题讨论】:
-
所以您的标题中有 SQL Server,并且有 一个 plsql 标签。会是什么?
标签: sql sql-server tsql