public LinkedHashMap<Integer, List<Tuple>> combineGroupBy() {

		LinkedHashMap<String, LinkedList<List<Tuple>>> grouped = new LinkedHashMap<String, LinkedList<List<Tuple>>>();

		for (int k : instream.keySet()) {
			StringBuilder key = new StringBuilder();
			for (Column colName : col) {
				for (Tuple tup : instream.get(k)) {

					String val = tup.getOsColValue(colName.toString());
					if (val != null) {
						key.append(val);
						break;
					}

				}
			}
			if (grouped.containsKey(key.toString())) {
				grouped.get(key.toString()).add(instream.get(k));
			} else {
				LinkedList<List<Tuple>> temp = new LinkedList<List<Tuple>>();
				temp.add(instream.get(k));
				grouped.put(key.toString(), temp);
			}

		}

		int count = 0;
		int count2 = 0;
		int count3 = 0;
		LinkedList<List<Tuple>> traverse = new LinkedList<List<Tuple>>();
		for (String sb : grouped.keySet()) {
			traverse = grouped.get(sb);
			LinkedHashMap<Integer, List<Tuple>> temp = new LinkedHashMap<Integer, List<Tuple>>();
			for (List<Tuple> t : traverse) {
				outstream.put(count++, t);
				temp.put(count2++, t);
			}
			count2 = 0;

			sel_op.put(count3++, temp);
		}
		// Print Sorted Map
		// for (Integer i : outstream.keySet()) {
		//
		// for (Tuple t1 : outstream.get(i)) {
		// t1.printTuple();
		// }
		// }

		return outstream;
	}