当我使用GROUP BY组合值时,如何在SQL表中显示更改?

时间:2014-11-03 18:33:06

标签: java mysql sql swing jtable

我有一个名为Store_Data的数据库表,我在JTable中显示了三列。

以下是专栏:

  1. NUMBERS

  2. AMOUNT

  3. DATE

  4. 如何在jtable中显示其他列?缺少其他列

    enter image description here

    我设法使用此SQL命令“SELECT NUMBERS,SUM(AMOUNT)FROM Store_Data GROUP BY NUMBERS”获取组合值,并且我在JTable中显示它。

    但是,在JTable中我只看到列NUMBERS和另一列显示AMOUNT值的所有总和。我没有在Jtable中看到其他列。

    enter image description here

    这是我的代码,

    private JTable showRecords(Connection con)
    {
    
        try
        {
            column.clear();
            data.clear();
    
            _stmt = con.createStatement();
    
            //String getColumn = "SELECT * FROM APP.NYPMTRIPLESTRAIGHT";
    
            /*this is only a test*/
            String test = "SELECT NUMBERS, SUM(AMOUNT) FROM Store_Data GROUP BY NUMBERS";
    
            ResultSet rs = _stmt.executeQuery(test);
    
            //this will collect the data from the database
            ResultSetMetaData metaData = rs.getMetaData();
    
            //this will count all the columns from 
            int column_count = metaData.getColumnCount();
            for(int j = 1; j <= column_count; j++)
            {
                column.add(metaData.getColumnName(j));
            }
    
            while(rs.next())
            {
    
                Vector<Object> vector = new Vector<Object>();
    
                for(int i = 1; i <= column_count; i++)
                {
                    vector.add(rs.getObject(i));
                }
    
                data.add(vector);
            }
    
            _records = new JTable(data, column);
    
            return _records;
    
        } catch (SQLException ex) 
        {
            JOptionPane.showMessageDialog(null, ex.getMessage());
        }
    
        return _records;
    }  
    

    注意:我知道使用Vector是错误的。我只是用它进行测试。

2 个答案:

答案 0 :(得分:1)

您的查询汇总了AMOUNT的所有值,并使用Group by子句显示总和。

分组依据将根据所使用的函数将类似的值分组到一个实体中。 [&#34;和&#34;在你的情况下]。

您需要从数据库中获取数字和金额

SELECT NUMBERS, AMOUNT FROM APP.NYPMTRIPLESTRAIGHT;

然后在JTable中显示结果集数据。

答案 1 :(得分:0)

试试这个:

SELECT 
  t1.NUMBERS, 
  CONCAT(YEAR(T1.DATE) , '-' , MONTH(t1.DATE) , '-' ,DAY(t1.DATE)) as DATE, 
  SUM(AMOUNT) AS AMOUNT 
FROM table1 t1 
GROUP BY 1, 2

这里有sqlfiddle