我有一个仅返回几行的查询,但我需要以这样的方式对结果进行分组,使得前两列在其值发生变化之前不会重复。
让我告诉你我的意思,这样会更容易。
这是查询:
select isnull(d.FirstName, '') + ' ' + isnull(d.LastName, '') as Chauffeur,
t.securysatnr,
convert(date, p.PlanningDate) as Datum,
p.StartTime as LaadUur,
r.LotNr,
isnull(pFrom.City, '') + ' - ' + isnull(pTo.City, '') as RitInfo
from tblPlanning p
left outer join vwRit r on p.RitID = r.RitID
left outer join tblPlace pFrom on r.VertrekID = pFrom.PlaceID
left outer join tblPlace pTo on r.BestemmingID = pTo.PlaceID
inner join tblDriver d on p.DriverID = d.DriverID
inner join tblTruck t on p.TruckID = t.TruckID
where convert(date, p.PlanningDate) >= convert(date, getdate())
order by Chauffeur, convert(date, p.PlanningDate), p.StartTime
这是返回的结果集:
Chauffeur securysatnr Datum LaadUur LotNr RitInfo
--------- ----------- ----- ------- ----- -------
Aloyzyas JBB017 2017-07-12 13 RT-0181 Creutzwald (Tramosa) - Koln TS
Aloyzyas JBB017 2017-07-12 20 EMPTY Koln TS - Neuss (ATN)
Aloyzyas JBB017 2017-07-13 6 2094935 Neuss (ATN) - Zulpich WWL
Andrii HT5485 FB-CA 2017-07-12 14 EMPTY Zulpich WWL - Born (Nedcar)
Andrii HT5485 FB-CA 2017-07-12 16 1709426 Born (Nedcar) - Zeebrugge Hanze terminal 521-525
Andrii HT5485 FB-CA 2017-07-13 8 0006620 Zeebrugge ICO gate 502 - Niederkorn (Collé)
Darius HPV472 2017-07-12 17 0006624 Zeebrugge ICO gate 502 - Antwerpen 1333
and so on...
这就是我想要得到的结果:
Chauffeur securysatnr Datum LaadUur LotNr RitInfo
--------- ----------- ----- ------- ----- -------
Aloyzyas JBB017 2017-07-12 13 RT-0181 Creutzwald (Tramosa) - Koln TS
2017-07-12 20 EMPTY Koln TS - Neuss (ATN)
2017-07-13 6 2094935 Neuss (ATN) - Zulpich WWL
Andrii HT5485 FB-CA 2017-07-12 14 EMPTY Zulpich WWL - Born (Nedcar)
2017-07-12 16 1709426 Born (Nedcar) - Zeebrugge Hanze terminal 521-525
2017-07-13 8 0006620 Zeebrugge ICO gate 502 - Niederkorn (Collé)
Darius HPV472 2017-07-12 17 0006624 Zeebrugge ICO gate 502 - Antwerpen 1333
and so on...
我希望这能明确我想要的结果。
这在 sql-server 中可能吗?如果是,那么我当然该怎么做。
EDIT:
一种选择是在存储过程中执行此操作,然后循环记录并填充并返回临时表。
但我希望有一个没有存储过程的解决方案。
EDIT:
我知道这通常应该在表示层中完成,但在这种情况下很难。它是一种从另一个表接收要执行的查询的表单,因此它不知道将接收哪些结果集。因此,在这种情况下不可能在表示层上执行此操作,除非有人知道在这种情况下如何在此处执行此操作。