我需要根据java中另一列的值来增加列

时间:2014-03-28 05:57:09

标签: java sql-server

我在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();
            }  

我已编辑了我的帖子并添加了代码

np - expected output for  plate value 1

np - result got for plate value 1

np cust - expected output for plate value 2

np cust - result got for plate value 2

从预期结果和上面代码得到的结果可以清楚地看到,观察锄头值必须增加次数或数量列中提到的数量(例如,如果数量为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次。

我希望我的问题和结果很清楚

0 个答案:

没有答案
相关问题