0
請幫助我實現包含加入和條件COUNT和SUM Linq中的這個SQL查詢:LINQ的加入和聚合
SELECT
COUNT(distinct Spool.ISODwg+'-'+Spool.SpoolNo) as All_Spool,
SUM(case when (JointFMC.SBNM='AG' and JointFMC.SF='S') then JointFMC.Size else 0 end) as All_DI,
COUNT(distinct case when (Spool.ReleaseNo is not null and Spool.ReleaseNo!='') then Spool.ISODwg+'-'+Spool.SpoolNo else null end) as Release_Spool,
SUM(case when (Spool.ReleaseNo is not null and Spool.ReleaseNo!='') and (JointFMC.SBNM='AG' and JointFMC.SF='S') then JointFMC.Size else 0 end) as Release_DI,
COUNT(distinct case when (JointFMC.RT_Status='Result Needed' or JointFMC.RT_Status='App. Needed') and (JointFMC.SBNM='AG' and JointFMC.SF='S') then Spool.ISODwg+'-'+Spool.SpoolNo else null end) as BL_Spool,
SUM(case when (JointFMC.RT_Status='Result Needed' or JointFMC.RT_Status='App. Needed') and (JointFMC.SBNM='AG' and JointFMC.SF='S') then JointFMC.Size else 0 end) as BL_DI
FROM Spool LEFT JOIN JointFMC ON (Spool.ISODwg = JointFMC.ISODwg and Spool.SpoolNo = JointFMC.SpoolNo)
卷軸類(部分)
public class Spool : ModelBase
{
#region Properties-------------------------------------------------------------------------------
//ISODwgNo
private string _iSODwgNo;
public string ISODwgNo
{
get { return _iSODwgNo; }
set
{
if (_iSODwgNo != value)
{
_iSODwgNo = value;
ValidateProperty("ISODwgNo", value);
OnPropertyChanged("ISODwgNo");
}
}
}
//ISODwg
private string _iSODwg;
public string ISODwg
{
get { return _iSODwg; }
set
{
if (_iSODwg != value)
{
_iSODwg = value;
ValidateProperty("ISODwg", value);
OnPropertyChanged("ISODwg");
}
}
}
//SpoolNo
private string _spoolNo;
public string SpoolNo
{
get { return _spoolNo; }
set
{
if (_spoolNo != value)
{
_spoolNo = value;
ValidateProperty("SpoolNo", value);
OnPropertyChanged("SpoolNo");
}
}
}
//Type
private string _type;
public string Type
{
get { return _type; }
set
{
if (_type != value)
{
_type = value;
ValidateProperty("Type", value);
OnPropertyChanged("Type");
}
}
}
//Area
private string _area;
public string Area
{
get { return _area; }
set
{
if (_area != value)
{
_area = value;
ValidateProperty("Area", value);
OnPropertyChanged("Area");
}
}
}
}
JointFMC類(部分)
public class JointFMC : ModelBase
{
#region Properties------------------------------------------------------
//SBNM
private string _sBNM;
public string SBNM
{
get { return _sBNM; }
set
{
if (_sBNM != value)
{
_sBNM = value;
ValidateProperty("SBNM", value);
OnPropertyChanged("SBNM");
}
}
}
//ISODwg
private string _iSODwg;
public string ISODwg
{
get { return _iSODwg; }
set
{
if (_iSODwg != value)
{
_iSODwg = value;
ValidateProperty("ISODwg", value);
OnPropertyChanged("ISODwg");
}
}
}
//JointNo
private string _jointNo;
public string JointNo
{
get { return _jointNo; }
set
{
if (_jointNo != value)
{
_jointNo = value;
ValidateProperty("JointNo", value);
OnPropertyChanged("JointNo");
}
}
}
//SpoolNo
private string _spoolNo;
public string SpoolNo
{
get { return _spoolNo; }
set
{
if (_spoolNo != value)
{
_spoolNo = value;
ValidateProperty("SpoolNo", value);
OnPropertyChanged("SpoolNo");
}
}
}
//Size
private double? _size;
public double? Size
{
get { return _size; }
set
{
if (_size != value)
{
_size = value;
ValidateProperty("Size", value);
OnPropertyChanged("Size");
}
}
}
//SF
private string _sF;
public string SF
{
get { return _sF; }
set
{
if (_sF != value)
{
_sF = value;
ValidateProperty("SF", value);
OnPropertyChanged("SF");
}
}
}
//WeldRpNo
private string _weldRpNo;
public string WeldRpNo
{
get { return _weldRpNo; }
set
{
if (_weldRpNo != value)
{
_weldRpNo = value;
ValidateProperty("WeldRpNo", value);
OnPropertyChanged("WeldRpNo");
}
}
}
//RT_Status
private string _rT_Status;
public string RT_Status
{
get { return _rT_Status; }
set
{
if (_rT_Status != value)
{
_rT_Status = value;
ValidateProperty("RT_Status", value);
OnPropertyChanged("RT_Status");
}
}
}
#endregion
}
關注
下面是如何在一個查詢中執行此操作的示例: http://stackoverflow.com/questions/1597181/linq-to-sql-how-to-aggregate-without-a-group-by –
Show我們到目前爲止你已經嘗試過 – user449689
@ user449689:我嘗試了很多沒有用處的想法,最後我會嘗試的是讓2個查詢第一個用於分組,第二個用於分組,第二個用於最終結果 – Hussein