var groupdata = GetData.Get_Bygroup();
public static DataTable Get_Bygroup()
{
var sql_bygroup = new StringBuilder();
var datetime_char = datetime.ToString("yyyyMMdd");
var datetime_6 = datetime.AddDays(-6).ToString("yyyyMMdd");
sql_bygroup.Append(" with aa as ( select distinct tt.recipe,case when tt.total_count<>0 then round(tt.ooc_count_new/tt.total_count*100,10) else 0 end as OOC_Rate ");
sql_bygroup.Append(" from ( ");
sql_bygroup.Append(" select distinct xx.recipe,xx.total_count,yy.ooc_count, ");
sql_bygroup.Append(" case when yy.ooc_count is null then 0 else yy.ooc_count end as ooc_count_new ");
sql_bygroup.Append(" ");
sql_bygroup.Append(" ");
sql_bygroup.Append(" from ( select t.recipe,count(1) as total_count ");
//sql_bygroup.Append(" from espt_ye_lot_ooc_summary t,espt_ye_ooc_prod_control aa ");
sql_bygroup.Append(" from ( ");
sql_bygroup.Append(" select distinct jj.datetime,jj.lot,jj.lot_ooc,jj.product,jj.layer, ");
sql_bygroup.Append(" jj.recipe,jj.machinename,jj.measureddatetime,jj.runcardid,jj.productname, ");
sql_bygroup.Append(" jj.topplanname,jj.edcplanid,jj.measurestepname,jj.stepsequence,jj.processstepid,jj.processstepseq ");
sql_bygroup.Append(" from espt_ye_lot_ooc_summary jj,espt_ye_ooc_prod_control aa ");
sql_bygroup.AppendFormat(" where jj.datetime >= '{0}' and jj.datetime <= '{1}' ", datetime_6, datetime_char);
sql_bygroup.Append(" and substr(jj.machinename,1,5) in ('FLBFI','FLDFI') ");
//if (cbo_mach_cap.Text != "")
//{
// sql_bygroup.Append(" and substr(t.machinename,1,5) in ( ");
// foreach (var item in cbo_mach_cap.Text.Split(','))
// {
// sql_bygroup.AppendFormat("'{0}',", item.Trim());
// }
// sql_bygroup.Remove(sql_bygroup.Length - 1, 1);
// sql_bygroup.Append(") ");
//}
sql_bygroup.Append(" and jj.product=aa.prodbody and aa.product_need='Y' ");
sql_bygroup.AppendFormat(" and jj.recipe in ( select distinct k.recipe from espt_ye_lot_ooc_summary k where k.datetime='{0}' ))t ", datetime_char);
sql_bygroup.Append(" group by t.recipe) xx ");
sql_bygroup.Append(" left join ( select t.recipe,count(1) as ooc_count ");
//sql_bygroup.Append(" from espt_ye_lot_ooc_summary t,espt_ye_ooc_prod_control aa ");
sql_bygroup.Append(" from ( ");
sql_bygroup.Append(" select distinct jj.datetime,jj.lot,jj.lot_ooc,jj.product,jj.layer, ");
sql_bygroup.Append(" jj.recipe,jj.machinename,jj.measureddatetime,jj.runcardid,jj.productname, ");
sql_bygroup.Append(" jj.topplanname,jj.edcplanid,jj.measurestepname,jj.stepsequence,jj.processstepid,jj.processstepseq ");
sql_bygroup.Append(" from espt_ye_lot_ooc_summary jj,espt_ye_ooc_prod_control aa ");
sql_bygroup.AppendFormat(" where jj.datetime >= '{0}' and jj.datetime <= '{1}' ", datetime_6, datetime_char);
sql_bygroup.Append(" and substr(jj.machinename,1,5) in ('FLBFI','FLDFI') ");
//if (cbo_mach_cap.Text != "")
//{
// sql_bygroup.Append(" and substr(t.machinename,1,5) in ( ");
// foreach (var item in cbo_mach_cap.Text.Split(','))
// {
// sql_bygroup.AppendFormat("'{0}',", item.Trim());
// }
// sql_bygroup.Remove(sql_bygroup.Length - 1, 1);
// sql_bygroup.Append(") ");
//}
sql_bygroup.Append(" and jj.lot_ooc='Y' and jj.product=aa.prodbody and aa.product_need='Y' ");
sql_bygroup.AppendFormat(" and jj.recipe in ( select distinct k.recipe from espt_ye_lot_ooc_summary k where k.datetime='{0}' ))t ", datetime_char);
sql_bygroup.Append(" group by t.recipe ) yy ");
sql_bygroup.Append(" on xx.recipe=yy.recipe ) tt ), ");
sql_bygroup.Append(" ");
sql_bygroup.Append(" ");
sql_bygroup.Append(" bb as (select distinct tt.yegroup, ");
sql_bygroup.Append(" tt.recipe,");
sql_bygroup.Append(" case");
sql_bygroup.Append(" when tt.total_count <> 0 then");
sql_bygroup.Append(" round(tt.ooc_count_new / tt.total_count * 100, 2)");
sql_bygroup.Append(" else");
sql_bygroup.Append(" 0");
sql_bygroup.Append(" end as OOC_Rate");
sql_bygroup.Append(" from(select distinct xx.yegroup,");
sql_bygroup.Append(" xx.recipe,");
sql_bygroup.Append(" xx.total_count,");
sql_bygroup.Append(" yy.ooc_count,");
sql_bygroup.Append(" case");
sql_bygroup.Append(" when yy.ooc_count is null then");
sql_bygroup.Append(" 0");
sql_bygroup.Append(" else");
sql_bygroup.Append(" yy.ooc_count");
sql_bygroup.Append(" end as ooc_count_new");
sql_bygroup.Append(" from(select t.yegroup, t.recipe, count(1) as total_count");
sql_bygroup.Append(" from(select hh.*, zz.yegroup");
sql_bygroup.Append(" from(select distinct jj.datetime,");
sql_bygroup.Append(" jj.lot,");
sql_bygroup.Append(" jj.lot_ooc,");
sql_bygroup.Append(" jj.product,");
sql_bygroup.Append(" jj.layer,");
sql_bygroup.Append(" jj.recipe,");
sql_bygroup.Append(" jj.machinename,");
sql_bygroup.Append(" jj.measureddatetime,");
sql_bygroup.Append(" jj.runcardid,");
sql_bygroup.Append(" jj.productname,");
sql_bygroup.Append(" jj.topplanname,");
sql_bygroup.Append(" jj.edcplanid,");
sql_bygroup.Append(" jj.measurestepname,");
sql_bygroup.Append(" jj.stepsequence,");
sql_bygroup.Append(" jj.processstepid,");
sql_bygroup.Append(" jj.processstepseq");
sql_bygroup.Append(" from espt_ye_lot_ooc_summary jj,");
sql_bygroup.Append(" espt_ye_ooc_prod_control aa");
sql_bygroup.AppendFormat(" where jj.datetime >= '{0}'", datetime_6);
sql_bygroup.AppendFormat(" and jj.datetime <= '{0}'", datetime_char);
sql_bygroup.Append(" and jj.product = aa.prodbody");
sql_bygroup.Append(" and aa.product_need = 'Y'");
sql_bygroup.Append(" and substr(jj.machinename, 1, 5) in ('FLBFI', 'FLDFI')");
sql_bygroup.Append(" and jj.recipe in (select aa.recipe");
sql_bygroup.Append(" from aa /*where ( aa.ooc_rate=0 or aa.ooc_rate>=50 )*/");
sql_bygroup.Append(" )) hh");
sql_bygroup.Append(" left join ESPT_PRODGROUP_INFO_DEFECT zz");
sql_bygroup.Append(" on hh.product = zz.prodbody");
sql_bygroup.Append(" and zz.yegroup is not null) t");
sql_bygroup.Append(" group by t.yegroup, t.recipe) xx");
sql_bygroup.Append(" left join(select t.yegroup, t.recipe, count(1) as ooc_count");
sql_bygroup.Append(" from(select hh.*, zz.yegroup");
sql_bygroup.Append(" from(select distinct jj.datetime,");
sql_bygroup.Append(" jj.lot,");
sql_bygroup.Append(" jj.lot_ooc,");
sql_bygroup.Append(" jj.product,");
sql_bygroup.Append(" jj.layer,");
sql_bygroup.Append(" jj.recipe,");
sql_bygroup.Append(" jj.machinename,");
sql_bygroup.Append(" jj.measureddatetime,");
sql_bygroup.Append(" jj.runcardid,");
sql_bygroup.Append(" jj.productname,");
sql_bygroup.Append(" jj.topplanname,");
sql_bygroup.Append(" jj.edcplanid,");
sql_bygroup.Append(" jj.measurestepname,");
sql_bygroup.Append(" jj.stepsequence,");
sql_bygroup.Append(" jj.processstepid,");
sql_bygroup.Append(" jj.processstepseq");
sql_bygroup.Append(" from espt_ye_lot_ooc_summary jj,");
sql_bygroup.Append(" espt_ye_ooc_prod_control aa");
sql_bygroup.AppendFormat(" where jj.datetime >= '{0}'", datetime_6);
sql_bygroup.AppendFormat(" and jj.datetime <= '{0}'", datetime_char);
sql_bygroup.Append(" and jj.lot_ooc = 'Y'");
sql_bygroup.Append(" and jj.yegroup is not null");
sql_bygroup.Append(" and jj.product = aa.prodbody");
sql_bygroup.Append(" and aa.product_need = 'Y'");
sql_bygroup.Append(" and substr(jj.machinename, 1, 5) in ('FLBFI', 'FLDFI')");
sql_bygroup.Append(" and jj.recipe in (select aa.recipe");
sql_bygroup.Append(" from aa /*where ( aa.ooc_rate=0 or aa.ooc_rate>=50 )*/");
sql_bygroup.Append(" )) hh");
sql_bygroup.Append(" left join ESPT_PRODGROUP_INFO_DEFECT zz");
sql_bygroup.Append(" on hh.product = zz.prodbody");
sql_bygroup.Append(" and zz.yegroup is not null) t");
sql_bygroup.Append(" group by t.yegroup, t.recipe) yy");
sql_bygroup.Append(" on xx.yegroup = yy.yegroup");
sql_bygroup.Append(" and xx.recipe = yy.recipe) tt),");
sql_bygroup.AppendFormat(" zz as (select '{0}' as datetime,bb.* from bb) ", datetime_char);
sql_bygroup.Append(" select distinct zz.yegroup, ");
sql_bygroup.Append(" case when r1.ooc_rate_1 is not null then r1.ooc_rate_1 else 0 end as ooc_rate_1, ");
sql_bygroup.Append(" case when r2.ooc_rate_2 is not null then r2.ooc_rate_2 else 0 end as ooc_rate_2, ");
sql_bygroup.Append(" case when r3.ooc_rate_3 is not null then r3.ooc_rate_3 else 0 end as ooc_rate_3, ");
sql_bygroup.Append(" case when r4.ooc_rate_4 is not null then r4.ooc_rate_4 else 0 end as ooc_rate_4, ");
sql_bygroup.Append(" case when r5.ooc_rate_5 is not null then r5.ooc_rate_5 else 0 end as ooc_rate_5 ");
sql_bygroup.Append(" from zz ");
sql_bygroup.Append(" left join ");
sql_bygroup.Append(" (select zz.yegroup,count(zz.recipe) as ooc_rate_1 ");
sql_bygroup.Append(" from zz ");
sql_bygroup.Append(" where zz.ooc_rate=0 ");
sql_bygroup.Append(" group by zz.yegroup ) r1 on zz.yegroup=r1.yegroup ");
sql_bygroup.Append(" left join ");
sql_bygroup.Append(" (select zz.yegroup,count(zz.recipe) as ooc_rate_2 ");
sql_bygroup.Append(" from zz ");
sql_bygroup.Append(" where zz.ooc_rate>0 and zz.ooc_rate<=30 ");
sql_bygroup.Append(" group by zz.yegroup ) r2 on zz.yegroup=r2.yegroup ");
sql_bygroup.Append(" left join ");
sql_bygroup.Append(" (select zz.yegroup,count(zz.recipe) as ooc_rate_3 ");
sql_bygroup.Append(" from zz ");
sql_bygroup.Append(" where zz.ooc_rate>30 and zz.ooc_rate<50 ");
sql_bygroup.Append(" group by zz.yegroup) r3 on zz.yegroup=r3.yegroup ");
sql_bygroup.Append(" left join ");
sql_bygroup.Append(" (select zz.yegroup,count(zz.recipe) as ooc_rate_4 ");
sql_bygroup.Append(" from zz ");
sql_bygroup.Append(" where zz.ooc_rate>=50 and zz.ooc_rate<100 ");
sql_bygroup.Append(" group by zz.yegroup) r4 on zz.yegroup=r4.yegroup ");
sql_bygroup.Append(" left join ");
sql_bygroup.Append(" (select zz.yegroup,count(zz.recipe) as ooc_rate_5 ");
sql_bygroup.Append(" from zz ");
sql_bygroup.Append(" where zz.ooc_rate=100 ");
sql_bygroup.Append(" group by zz.yegroup) r5 on zz.yegroup=r5.yegroup ");
sql_bygroup.AppendFormat(" where zz.datetime='{0}' ", datetime_char);
sql_bygroup.Append(" order by zz.yegroup asc ");
var group_table = ESPTDBItemInfo.TableFill("group_table", sql_bygroup.ToString());
return group_table;
}
根据上述C#与sql语句,详解出填入tableShapeGroupSum表格第一列的数据是如何筛选的
最新发布