1)I have four fields like material no, item no, date, quantity.
Input:
x
Material item date quantity
101 91 06/05/2020 4
101 92 06/05/2020 6
101 93 06/05/2020 4
Requirement is we need to consider date as reference
2) If date is repeated twice or n number of times , the output should goes to first item with adding quantity.
Output:
Material item date quantity
101 91 06/05/2020 14
Advertisement
Answer
It seems you need to run the following SQL query:
SELECT `material`, `date`, MIN(item), SUM(quantity)
FROM `your_table`
GROUP BY `material`,`date`
JDBC Example:
String sql = "SELECT `material`, `date`, MIN(item) AS item, SUM(quantity) AS quantity "
+ "FROM `your_table` "
+ "GROUP BY `material`,`date`";
try (
Connection conn = DriverManager.getConnection(DB_URL, USER, PASS);
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql);
) {
while (rs.next()) {
//Retrieve by column name
int material = rs.getInt("material");
Date date = rs.getDate("date");
int item = rs.getInt("item");
int quantity = rs.getInt("quantity");
//Display values
System.out.printf("%dt%st%dt%d%n", material, date, item, quantity);
}
}
Update
If MySQL 8 is used it should be possible to use its FIRST_VALUE
function to locate first item in a group.
Otherwise, the query may be rewritten to use subquery with LIMIT 1 for item
:
SELECT `material`, `date`, SUM(quantity),
(
SELECT item
FROM `your_table` in_tab
WHERE in_tab.material = out_tab.material AND in_tab.`date`=out_tab.`date`
LIMIT 1) AS item
FROM `your_table` out_tab
GROUP BY `material`,`date`