Traditionally, Wireless Sensor Networks (WSNs) are deployed with a single sink. Due to the emergence of sophisticated applications, WSNs may require more than one sink, where many nodes forward data to many sinks. Moreover, deploying more than one sink may prolong the network lifetime and address fault tolerance issues. Several protocols have been proposed for WSNs with multiple sinks. However, they are either routing protocols or forward data from many nodes to one sink. In this paper, we propose data aggregation scheduling and energy-balancing algorithms for WSNs with multiple sinks that forward data from many nodes to many sinks. The algorithm first forms trees rooted at virtual sinks and then balances the number of children among nodes to balance energy consumption. Further, the algorithm assigns contiguous slots to sibling nodes to avoid unnecessary energy waste due to active-sleep transitions. We prove a number of theoretical results and the correctness of the algorithms. Simulation and testbed results show the correctness and performance of our algorithms.