gpt4 book ai didi

c# - GROUP BY、ORDER BY 并在 LINQ 中排在首位

转载 作者:行者123 更新时间:2023-11-30 23:01:34 24 4
gpt4 key购买 nike

假设我有一个包含两列的表格:

TABLE A
-------
ProjectID NUMBER
STATUS VARCHAR2(6) // either 'CLOSED' or 'NEW'

ProjectID 最多可以有两个条目,其中包含 STATUS 的两个可能值和组合(ProjectIDSTATUS ) 是唯一的。

我只需要选择状态为“NEW”的那些 ProjectID。此外,如果对于 projectID,有两个具有不同状态(NEW 和 CLOSED)的条目,我不希望它出现在输出中。

我尝试使用 group by,然后对结果集进行降序排序(以便首先获得项目 ID 的"new"行),然后在 LINQ 中获取第一行,类似于此:

   var query = (from a in context.A.Where(o => o.STATUS == 'NEW')
group a by a.ProjectID into groups
select groups.OrderByDescending(o => o.ProjectID)
.ThenBy(o => o.STATUS)
.FirstOrDefault());

但它会导致查询中的“APPLY”子句导致错误。显然,Oracle 10g 不支持它。

感谢任何帮助。

最佳答案

也许是这样的?

SQL> with test (projectid, status) as
2 (select 1, 'new' from dual union -- should be returned
3 select 2, 'new' from dual union
4 select 2, 'closed' from dual union
5 select 3, 'closed' from dual union
6 select 4, 'new' from dual -- should be returned
7 )
8 select projectid
9 from test
10 group by projectid
11 having min(status) = max(status)
12 and min(status) = 'new';

PROJECTID
----------
1
4

SQL>

关于c# - GROUP BY、ORDER BY 并在 LINQ 中排在首位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50984190/

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