C# 带条件的C群
如果账单<10,如何将数据分组为有条件的 我有一张桌子:C# 带条件的C群,c#,contains,sqldatareader,C#,Contains,Sqldatareader,如果账单10和4 b=7+4=11,所以极限为10->10和1 c和g不超过限制 meetingId | bill ------------------ a | 10 a | 4 b | 10 b | 1 c | 1 g | 2 我尝试了SQL为什么,但我坚持使用if条件 我的SQL: SELECT NO_ORDRE ,ORDRE.COD
meetingId | bill
------------------
a | 6
b | 7
c | 1
a | 5
a | 3
b | 4
g | 2
预期成果:
a=6+5+3=14极限为10->10和4
b=7+4=11,所以极限为10->10和1
c和g不超过限制
meetingId | bill
------------------
a | 10
a | 4
b | 10
b | 1
c | 1
g | 2
我尝试了SQL为什么,但我坚持使用if条件
我的SQL:
SELECT NO_ORDRE
,ORDRE.CODE_CLIENT As CodeCl
,[CODE_DEST]
,ORDRE.RS_NOM As OrdreRS
,ORDRE.ADRESSE As OrdreAdr
,ORDRE.CP As OrdreCP
,ORDRE.VILLE As OrdreVille
,ENLEV_CREMB
,ENLEV_DECL
,MODAL_MODE
,[PAYS]
,[INSEE]
,[SIRET]
,ORDRE.TEL As OrdreTel
,ORDRE.FAX As OrdreFax
,[EMAIL]
,[NBR_COLIS]
,[POID]
,[OBS]
,[DATE_CREE]
,[DATE_MODIF]
,[REF_EXPED]
,[AUTRE_REF]
,[AGENCE]
,[TRANSPORTEUR]
,NOM
,CAPITAL
,LIBELLE
,T_LOGO.IMG As FaImg
,T_LOGO.ADRESSE As FaAdr
,T_LOGO.CP As FaCp
,T_LOGO.VILLE As FaVille
,T_LOGO.TEL As FaTel
,T_LOGO.FAX As FaFax
,FAWEB_CLIENT.RS_NOM As CliRsNom
,FAWEB_CLIENT.ADRESSE As CliAdr
,FAWEB_CLIENT.CP As CliCp
,FAWEB_CLIENT.VILLE As CliVille
FROM [ORDRE]
LEFT JOIN T_LOGO ON ORDRE.TRANSPORTEUR = T_LOGO.NOID
LEFT JOIN FAWEB_CLIENT ON ORDRE.CODE_CLIENT = FAWEB_CLIENT.CODE_CLIENT
WHERE (STATUT_ORDRE = 2) AND (TRANSPORTEUR IN (SELECT ParsedString From dbo.ParseStringList(@Trans)))
然后我用C
List<Pers_Ordre> oListOrdre = new List<Pers_Ordre>();
while (readerOne.Read())
{
Pers_Ordre oPerOrdr = new Pers_Ordre();
Pers_Ordre test = (from t in oListOrdre where t.DestId == readerOne["CODE_DEST"].ToString() select t).FirstOrDefault();
oPerOrdr.OrdreId = Convert.ToInt32(readerOne["NO_ORDRE"]);
oPerOrdr.DestId = readerOne["CODE_DEST"].ToString();
if (test == null)
{
oListOrdre.Add(oPerOrdr);
}
else
{
int NbrColis = (from t in oListOrdre where t.DestId == readerOne["CODE_DEST"].ToString() select t.NbrColis).FirstOrDefault();
if (NbrColis < 5)
{
test.NbrColis += NbrColis;
}
}
}
它没有达到我预期的效果
谢谢你的帮助 您不应该在客户端执行此操作,因为它可能会变得非常密集,一个带有HAVING子句的简单GROUP BY应该可以为您提供预期的结果:
SELECT meetingId, SUM(bill) as bill_total
FROM table
GROUP BY meetingId
HAVING SUM(bill) < 10
样本数据:
您需要的查询:
SELECT
MeetingID,
SUM(bill) AS Total
FROM
Table_1
GROUP BY
MeetingID
HAVING
SUM(bill) < 10
查询结果如下:
您不应该在客户端执行此操作,因为它可能会变得非常密集,一个带有HAVING子句的简单GROUP BY应该可以为您提供预期的结果:
SELECT meetingId, SUM(bill) as bill_total
FROM table
GROUP BY meetingId
HAVING SUM(bill) < 10
样本数据:
您需要的查询:
SELECT
MeetingID,
SUM(bill) AS Total
FROM
Table_1
GROUP BY
MeetingID
HAVING
SUM(bill) < 10
查询结果如下:
此SQL查询将返回所需的结果:
SELECT meetingId, SUM(bill) as bill_total
FROM table
GROUP BY meetingId
HAVING SUM(bill) < 10
此SQL查询将返回所需的结果:
SELECT meetingId, SUM(bill) as bill_total
FROM table
GROUP BY meetingId
HAVING SUM(bill) < 10
不是一个真正的答案,但这不适合在评论中。
下面是一个LINQ to Objects查询,该查询按meetingId对项目进行分组,并创建新项目,以便有一个项目的账单小于10,并且根据需要有多个项目的账单等于10,以保持总和:
这就是你要找的吗
代码:
不是一个真正的答案,但这不适合在评论中。
下面是一个LINQ to Objects查询,该查询按meetingId对项目进行分组,并创建新项目,以便有一个项目的账单小于10,并且根据需要有多个项目的账单等于10,以保持总和:
这就是你要找的吗
代码:
您使用的是什么版本的.NET?你能用LINQ吗?谢谢你的回复。我使用的是.NET的最新版本。您使用的是哪个版本的.NET?你能用LINQ吗?谢谢你的回复。我使用的是.nett的最后一个版本谢谢你,但是我需要a-10和a-2,因为a=5+4+3=12,c-10和c-2,因为c=11+1=12,d-10和d-2,因为d=12我只是在使用我的样本数据。谢谢你,但是我需要a-10和a-2,因为a=5+4+3=12,c-10和c-2,因为c=11+1=12,d-10和d-2,因为d=12我只是在使用我的样本数据。