gpt4 book ai didi

c# - SQL返回列中具有最大值的行,在特定范围内

转载 作者:搜寻专家 更新时间:2023-10-30 22:00:17 26 4
gpt4 key购买 nike

我正在使用 OleDbDataAdapter 在 C# 中填充数据表,我试图让查询正常工作,但没有取得太大成功。

与服务器的通信工作正常,返回所有记录的简单查询没有任何过滤器就证明了这一点:

var commandText = string.Format("SELECT IsoShtRevID, LineID, Filename, Revision " +
"FROM dbo.PDSIsometricSheets WHERE SchemaName='{0}'", projectNo);

这给了我大约 8000 个条目的列表,但是有一些冗余。

有多行具有相同的 LineID,但每一行都有一个单独的 Revision 值。我试图只获取每个 LineID 具有最高修订版的行,范围从 0 到 5。

以下是我迄今为止尝试过的一些尝试:

var commandText = string.Format("SELECT * FROM 
(SELECT max(Revision) as LatestRev
FROM dbo.PDSIsometricSheets)
WHERE Revision < 5" , projectNo);


var commandText = string.Format("SELECT T.IsoShtRevID, T.LineID, T.Filename, T.Revision
FROM dbo.PDSIsometricSheets T
WHERE Revision =
(SELECT MAX(T1.Revision)
FROM dbo.PDSIsometricSheets T1
WHERE T1.IsoShtRevID = T.IsoShtRevID
)", projectNo);

var commandText = string.Format("SELECT IsoShtRevID, LineID, Filename, MAX(Revision) as LatestRevision
FROM dbo.PDSIsometricSheets WHERE SchemaName='{0}'
GROUP BY LineID, IsoShtRevID, Filename", projectNo);

以下是我迄今为止为了让它发挥作用而访问过的问题:

SQL Select only rows with Max Value on a Column

How can I SELECT rows with MAX(Column value), DISTINCT by another column in SQL?

Fetch the row which has the Max value for a column

Select Rows with Maximum Column Value group by Another Column

上面的所有内容要么返回与我的原始查询相同的内容,要么只是语法错误导致的错误。 SQL 是我最擅长的东西,我试图通过使用 DataAdapter 来弄清楚我是否在功能上受到限制。

更新:

这是最新的迭代,使用了下面的一些建议:

var commandText = string.Format("SELECT IsoShtRevID, LineID, Filename, MAX(Revision) as MaxRevision " +
"FROM dbo.PDSIsometricSheets " +
"WHERE SchemaName='{0}' AND Revision <= 5 AND Revision >= 0" +
"GROUP BY IsoShtRevID, LineID, Filename", projectNo);

这会过滤掉 0 到 5 之间的值的修订,但是 LineID 仍然有多行,每行都有不同的修订号。这就像 Max 命令被忽略了......

最佳答案

选项 3 应该有效,但如果无效,是因为 FileName 或 IsoShtRevID 在修订版之间发生了变化。在这种情况下,您可以这样做:

SELECT  a.IsoShtRevID ,
a.LineID ,
a.Filename ,
a.Revision
FROM dbo.PDSIsometricSheets a
join (select max(Revision) as Revision, LineID
from dbo.PDSIsometricSheets where SchemaName ='{0}' ) x
join a on a.Revision = x.Revision and a.LineID=x.LineID
WHERE a.SchemaName = '{0}'

关于c# - SQL返回列中具有最大值的行,在特定范围内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17950398/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com