Select MIN([appdate]), CustID, CustAtt, Surname, Firstname, itemType
From table
Where appDate > (getdate())
Group by CustID, CustAtt
CustAtt CustID Surname Firstname appDate itemType
53247 20675 A AX
49535 12/FX08 B BX 14/08/2017 solid
70433 400039 C CX
67119 413555 D DX
51406 27/EY07 E EX 14/07/2017 Liquid
51406 27/EY08 E EX 13/09/2017 Gas
51406 27/EY09 E EX 11/12/2017 Solid A
51406 27/EY10 E EX 06/06/2018 Liquid A
82820 410053 F FX
52395 29/FA72 G GX 25/09/2017 Gas A
89488 414282 H HX
55855 412799 I IX 30/08/2017 Solid
55855 412799 I IX 21/08/2017 Liquid
53248 16/EK15 J JX 06/07/2017 Gas
53248 16/EK15 J JX 17/07/2017 Solid B
89835 911528 K KX 08/05/2018 Solid B
以上是我从上述脚本输出的代码片段,但没有给我所需的输出。我只想根据appdate列从我的数据集中为每个CustID & CustAtt选择一行。SQL SERVER 2008.如何仅基于日期选择一行
所需的输出应包括从当前日期的下一个最早日期,在的情况下的日期相同的任何给定行是可接受的: 输出表应产生:
CustAtt CustID Surname Firstname appDate itemType
53247 20675 A AX
49535 12/FX08 B BX 14/08/2017 solid
70433 400039 C CX
67119 413555 D DX
51406 27/EY07 E EX 14/07/2017 Liquid
82820 410053 F FX
52395 29/FA72 G GX 25/09/2017 Gas A
89488 414282 H HX
55855 412799 I IX 21/08/2017 Liquid
53248 16/EK15 J JX 06/07/2017 Gas
89835 911528 K KX 08/05/2018 Solid B
我想每个ID只返回一个记录。目前多个行都返回相同的ID,因为每个人都可以在不同日期进入约会。我想选择所有数据,其中每个人只有一条记录显示,其中日期是从当前日期开始的最早日期。例如,如果我有同一人在不同日期(07/07/17和08/07/17)的2条记录,我希望最早的日期是07/07/17。 – hhpe
我已经更新了答案。 –