我在sql server中有一个表,列为TP_No,Level_No,TP_No2,Quantity
样本值可能是..
Level_No | TP_No | TP_No2 | Quantity
____________________________________
1 | 1 | | 1
2 | 1 | 3 | 4
3 | 14.1 | 28, 32 | 8
对于每一行,我需要计算2件事物Plate value1和plate value 2.
对于第1行,Plate值1必须为1,因为级别为1且Quantity为1且Plate value2必须为空,因为TP_No2为空(重复数量字段中提到的编号的值)< / p>
对于第2行,Plate值1必须为1.1,1.2,1.3,1.4,因为level为2,因此,我们需要添加一个小数点并将小数点后的数字递增到数量中的数字,即,此处,数量为4,因此板值1将具有4个值,并且板值2必须为3个,3个,3个,3个(简单地重复并且不将TP_No2中提到的值增加到数量中提到的数量)
对于第3行,板值1必须为14.1.1到14.1.8(8个值),因为等级为3.因此,需要添加小数点,并且最后一个值必须增加到数字在数量上提到。并且,印版值2必须是28或32印刷8次(28 8次或32 8次或28 4次和32 4次)
try
{
java.util.List<String> level = new ArrayList<String>();
java.util.List<String> qty = new ArrayList<String>();
java.util.List<String> tpno = new ArrayList<String>();
java.util.List<String> tpcust = new ArrayList<String>();
java.util.List<String> np = new ArrayList<String>();
java.util.List<String> npcust = new ArrayList<String>();
Statement stat = con.createStatement();
ResultSet rs = stat.executeQuery("select Level_No, Qty, TP_No, Make2 from PlanningSheet.dbo.SAP");
while(rs.next())
{
int index = rs.getString("Qty").trim().indexOf(".");
String qty1 = rs.getString("Qty").trim().substring(0, index);
int qnty = Integer.parseInt(qty1);
qty.add(Integer.toString(qnty));
level.add(rs.getString("level_no").trim());
tpno.add(rs.getString("tp_no").trim());
tpcust.add(rs.getString("make2").trim());
}
System.out.println("qty : level : tpno : tpcust");
for(int j = 0; j < level.size(); j++)
{
//System.out.println(qty.get(j).toString().trim() + " :" + level.get(j).toString().trim() + " :" + tpno.get(j).toString().trim() + " : " + tpcust.get(j).toString().trim());
for(int i = 0; i < Integer.parseInt(qty.get(j).toString().trim()); i++)
{
if(!( (("").equals(tpno.get(j).toString().trim())) || ((" ").equals(tpno.get(j).toString().trim())) ))
{
if(tpno.get(j).toString().trim().contains("."))
{
System.out.println("tp_no with . : " + tpno.get(j).toString().trim());
int index1 = tpno.get(j).toString().trim().lastIndexOf(".");
String tpno1 = tpno.get(j).toString().trim().substring(0, index1);
String tpno2 = tpno.get(j).toString().trim().substring(index1 + 1);
int tpno3 = Integer.parseInt(tpno2);
np.add(tpno1 + "." + (tpno3 + 1));
System.out.println("tpno with . : " + tpno1 + "." + (tpno3 + 1));
}
else if(!(tpno.get(j).toString().trim().contains(".")))
{
String tpno1 = tpno.get(j).toString().trim();
System.out.println("tp_no without . : " + tpno.get(j).toString().trim());
String tpno2 = Integer.toString(Integer.parseInt(tpno.get(j).toString().trim()) + 1);
np.add(tpno1 + "." + tpno2);
System.out.println("tpno1 without . : " + tpno1 + "." + tpno2);
}
}
}
for(int i = 0; i < Integer.parseInt(qty.get(j).toString().trim()); i++)
{
if(!( (("").equals(tpcust.get(j).toString().trim())) || ((" ").equals(tpcust.get(j).toString().trim())) ))
{
if(tpcust.get(j).toString().trim().contains(","))
{
int index2 = tpcust.get(j).toString().trim().indexOf(",");
String tpcust1 = tpcust.get(j).toString().trim().substring(0, index2);
String tpcust2 = tpcust.get(j).toString().trim().substring(index2 + 1);
npcust.add(tpcust1);
npcust.add(tpcust2);
System.out.println("tpcust1 : " + tpcust1);
System.out.println("tpcust2 : " + tpcust2);
}
else if(!(tpcust.get(j).toString().trim().contains(",")))
{
npcust.add(tpcust.get(j).toString().trim());
System.out.println("tpcust : " + tpcust.get(j).toString().trim());
}
}
}
}
System.out.println("np size : " + np.size());
System.out.println("npcust size : " + npcust.size());
System.out.println("np : " + np);
System.out.println("npcust : " + npcust);
}
catch(Exception e3)
{
e3.printStackTrace();
}
我已编辑了我的帖子并添加了代码
从预期结果和上面代码得到的结果可以清楚地看到,观察锄头值必须增加次数或数量列中提到的数量(例如,如果数量为4, tp值为2,板值1的结果必须为2.1,2.2,2.3,2.4,如果tp cust为100,则板值2的结果必须为100,100,100,100。现在,如果数量是5,tp数是3.4,tp cust是4,板值1的结果必须是3.4.1,3.4.2,3.4.3,3.4.4,3.4.5,板值2的结果是4,4 ,4,4,4。现在,如果没有提到tp cust,则板值2将为空白。如果tp cust类似于2.1 - 2.6那么,板值2必须为2.1,2.2,2.3,2.4, 2.5,2.6。如果tp cust为4,5,数量为3,则4和5必须出现3次。
我希望我的问题和结果很清楚