根据某一字段统计数据

本文介绍了一种使用SQL联表查询从多个表中提取数据,并通过Distinct属性去除重复字段,最后通过Foreach循环对特定字段进行统计的方法。详细展示了如何在查询结果中进行数据筛选和操作,包括求和等计算。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述
如图所示,在我们统计数据的时候往往需要根据某一个字段去统计所以的有该字段的数据,并且根据字段来统计的字段也是不重复的!

var MarFamous = (from tbmarkst in myModels.B_Market
join tbMarketDeRE in myModels.R_MarketDeRelut on tbmarkst.MarketID equals tbMarketDeRE.MarketID
join tbCommDERE in myModels.R_CommoDeRelut on tbMarketDeRE.CommDeRelsutID equals tbCommDERE.CommDeRelsutID
join tbComm in myModels.B_Commodits on tbCommDERE.CommID equals tbComm.CommID
join tbFaoums in myModels.B_Famous on tbCommDERE.FamousID equals tbFaoums.FamousID
select tbFaoums.FamousName).Distinct();
联表查询出你想要进行统计的数据所拥有的这个字段的所有的数据(tbFaoums.FamousName),再通过一个Distinct属性把这些字段中重复的数据去掉,剩下的就是这个字段中不重复的数据了。
Foreach循环上面得到的不重复的字段,根据某一个值统计一条数据,有多少条字段就统计多少条数据!
然后就是数据的统计了,我这里使用的方法的是先一开始就查询出来全部,然后在在里面进行筛选,至于具体的查询的数据的方法根据个人实际情况而定,最主要的就是筛选出来的数据的操作等等:例如{
MarManyer = Convert.ToDecimal(MarManyer) + (itemes.MarMenyer * itemes.Number);
Univalent = Convert.ToDecimal(Univalent) + (itemes.Univalent * itemes.Number);
UnivalentNumber = listAcesDeRe.Sum(S => Convert.ToInt32(S.Number)).ToString()}求和

foreach (var item in MarFamous)
{
MarManyer = 0; Univalent = 0;
var FamousID = myModels.B_Famous.Where(S => S.FamousName.Trim() == item).SingleOrDefault().FamousID;
var list4 = list3.Where(S => S.FamousID == FamousID).ToList();
List listAcesDeRe = new List();
foreach (var itemes in list4)
{
if (ToFalse != true)
{
itemes.Number = Convert.ToInt32(-(itemes.THnumber));
}
MarManyer = Convert.ToDecimal(MarManyer) + (itemes.MarMenyer * itemes.Number);
Univalent = Convert.ToDecimal(Univalent) + (itemes.Univalent * itemes.Number);
listAcesDeRe.Add(itemes);
}
if (listAcesDeRe.Count() > 0)
{
AccessVo Linqsss = new AccessVo()
{
UnivalentNumber = listAcesDeRe.Sum(S => Convert.ToInt32(S.Number)).ToString(),
MarMenySJ = (MarManyer * listAcesDeRe[0].integral).ToString(),//实收金额
MarMenyZJe = MarManyer.ToString(),//吊牌金额
Univalent = Univalent.ToString(),//成本金额
ZhoukouMarMany = (MarManyer - Convert.ToDecimal(MarManyer * listAcesDeRe[0].integral)).ToString(),
XJ = item,
};
for (int k = 0; k < listAcesDeRe.Count(); k++)
{
Linqsss.AccessDereID += listAcesDeRe[k].CommID.ToString() + ‘;’;
}
listReslut.Add(Linqsss);
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值