我有一个仅返回几行的查询,但是我需要对结果进行分组,以使前两列直到其值更改后才重复。
让我告诉你我的意思,那会更容易。
这是查询:
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中这可能吗?如果是的话,那么我该如何在脱口而出。
编辑:
一种选择是在存储过程中执行此操作,然后遍历记录并填充并返回临时表。但是我希望没有存储过程的解决方案。
编辑:
我知道这通常应该在表示层中完成,但是在这种情况下很难。它是一种接收要从另一个表执行的查询的形式,因此它不知道将接收什么结果集。因此,在这种情况下将不可能在表示层上执行此操作,除非有人知道在这种情况下我该如何执行此操作。
这是表示/格式问题,而不是数据检索问题。
但是,如果您确实遇到这个问题,可以这样做…
注意: 未经 测试,您可能需要使用LEAD而不是LAG
SELECT
Chauffeur = CASE WHEN X.prevsecurysatnr = X.securysatnr THEN '' ELSE X.Chauffeur END,
securysatnr = CASE WHEN X.prevsecurysatnr = X.securysatnr THEN '' ELSE X.securysatnr END,
X.Datum,
X.LaadUur,
X.LotNr,
X.RitInfo
FROM
(
SELECT
LAG(t.securysatnr) OVER (ORDER BY ISNULL(d.FirstName, '') + ' ' + isnull(d.LastName, ''), convert(date, p.PlanningDate), p.StartTime) AS prevsecurysatnr,
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())
) X
order by
X.Chauffeur, X.Datum, X.LaadUur
这家餐厅是猫鼬的典范。我试图在适当的地方改变事情,但没有成功: 我认为是一个模型对象。我试图看到检查属性描述符与以下内容,它说: 为什么删除对象不起作用?为什么我看不到属性描述符? 编辑:所以这是一个猫鼬文件。但是,用Javascript术语来说,像Mongoose文档这样的对象可以基于Javascript对象以外的其他对象吗?一些基于内部C代码的包装器还是什么?
假设我有一条这样的路线 我想在第二个查询中使用一些数据,这些数据将由第一个查询返回。但是现在我不能这样做,因为根据我的理解(如果我错了,请纠正我),这两个查询都是promise的,并且是异步工作的,所以它不会等待第一个查询的完成来执行第二个查询。 我将如何重写这一点,使第一个查询的执行总是在执行第二个查询之前首先完成?
我试图为我的PHP站点提供一个搜索功能。用户应该能够搜索他们想要的查询的行和列,如“搜索引擎”。我尝试了以下php代码: 一切正常,但我得到了重复的结果。我读了很多答案,到目前为止我做了以下工作:我使用了和但没有返回任何结果。我尝试分组,但他们没有删除重复的,什么也没有返回。我还在where条件中对应用了PHP array_unique(),但它也没有返回任何结果。如果我可以做到这一点,只使用SQ
我在用猫鼬。我正在执行查找查询,但无法修改查询结果。
我找不到在laravel mysql中显示集合随机结果的方法。我的问题是: 奇怪的是,我相信使用兰德可以完成这项工作,但我的结果显示使用与否(兰德)值相同。 谢谢你的帮助。
我正在创建一个strutsHibernate应用程序。我使用hibernate查询获得了一个列表,并将其传递到action类中。但我不知道如何在JSP中显示它。 我已经在查询的基础上成功地得到了列表。现在我想用JSP显示这个列表。 我已经发布了<code>支柱。xml和用于显示结果的JSP。请检查。但在JSP中没有显示任何内容。我使用来显示列表。但没有运气。甚至我也尝试过在下打印简单文本,只是为了