|
我确实进行了搜索,发现该SQL在最近的日期之前选择了行,该
5 ~2 ?% t( Q/ v6 I* C8 c3 L. _8 `行 与我想要的日期非常接近,但我似乎无法使它起作用。
, ?/ V; e4 ]4 t我收到一个错误,因为选择列表中的列“ ID”不包含在聚合函数或GROUP BY子句中,所以它无效。4 `; Z* b0 X: _ d5 x0 g+ M
我想要每个不同名称的最新日期
& O- K- w& _" ?3 K: T; m5 Y( H1 h. PSelect ID,Name,Price,Date' G" a' z9 k& G8 q. T% W
From table8 {* X; g4 g+ L/ ^, w( J
Group By Name/ S! J) k$ q( G& L
Order By Date ASC. P* C& P* c. \
这是我想要的一个例子: e, [+ B/ s9 y) ]7 l3 Y
Table
" R6 e' r& f/ D) W8 xID| Name | Price | Date
( D9 r0 N" Q* f9 Q---------------------------------
$ H- F+ Y# n) P2 U3 i3 ~0 | A | 10 | 2012-05-03# z+ }+ d9 G- C* G2 M: Y
1 | B | 9 | 2012-05-02
; x4 m7 o9 h2 X. p, P& ^7 O8 B2 | A | 8 | 2012-05-04
8 [4 K. @+ ]. t3 | C | 10 | 2012-05-03* n& U3 U* O# [2 |4 Y4 L
4 | B | 8 | 2012-05-01* |* k% P- n8 L) e0 M0 J! [
理想的结果
$ U% c9 h1 @9 h2 iID| Name | Price | Date
5 a, O% \$ ]! U% g: v% Y------------------------------
. D1 u( j2 Y' A2 | A | 8 | 2012-05-04
' |* t0 k2 ~* S: c F3 | C | 10 | 2012-05-03
. d7 y6 Q1 J V& o ]' D8 L1 | B | 9 | 2012-05-022 U9 E, l5 y: h. r7 }/ U3 `2 S e
我正在使用Microsoft SQL Server 2008
o+ @( z/ I. M感谢您的帮助或指向正确的方向: V8 J7 \9 ]. y
0 Q; P% u' r* o解决方案:
9 n: R. Q" [5 j }8 Y " I6 |' {. `0 n5 a: a( h
, d% D' A( g' W9 P7 l ~% ?
+ j: u0 Q, {2 Y# }/ Z1 p* f9 D Select ID,Name, Price,Date
$ n5 j2 H' c4 o$ ~& o! M. v/ u From temp t1. ^! e6 s4 n# N3 |% G6 S
where date = (select max(date) from temp where t1.name =temp.name)
: ?' ]: v" p0 e# `" K order by date desc9 w) g* W/ K6 \/ `' t3 v
这是一个SQL Fiddle,上面有一个演示
2 u/ O+ m6 d @; l/ [1 u k' l+ }% M8 P' m \2 d7 Y: V# b& l
或者如Conrad所指出的,您可以使用INNER JOIN(另一个带有演示的SQL1 q2 p2 T& X% d# j' _
Fiddle):$ F, r: U; b- t, c9 C
SELECT t1.ID, t1.Name, t1.Price, t1.Date
4 T$ l! a, x) `! \& n6 W+ AFROM temp t1
w3 B& d7 `* N; FINNER JOIN
# S1 c& [8 X$ i0 Q(9 z" S! I' j3 ~
SELECT Max(date) date, name
* H) K. @# J; ?2 B% r- H S; i FROM temp
+ o7 k- q* i" ^4 `! y7 n GROUP BY name / V O, d: I# K
) AS t2
# k& m, E" ~% U; { ON t1.name = t2.name
3 P* ~8 j$ O! M& n AND t1.date = t2.date ! v: o8 f2 m7 }! J$ ~) J- l. g
ORDER BY date DESC |
|