今天写的一段复杂sql语句

<pre name="code" class="sql"><pre name="code" class="sql">select 
  					s.number,
  					(select text from t_dict_general where number=s.category)category,
  					(select text from t_dict_general where number=s.subCategory)subCategory,
  					s.stocktakingTime,
  					(select text from t_dict_general where number=s.state)state,
  					t.number taskNumber,
  					t.isSecondStocktaking secondStocktaking,
  					(select text from t_dict_general where number=t.state) taskState,
  					(
  						select ta.number from t_stocktaking_task_area ta
  						where ta.stocktakingTask=t.number
  					)warehouseAreaList,
  					(
  						select cell.number from t_stocktaking_task_user_defined_cell udcell,t_warehouse_cell cell
  						where udcell.stocktakingTask=t.number
  							  and convert(SUBSTR(cell.number,1,19),SIGNED)>=convert(SUBSTR(udcell.cellNumStart,1,19),SIGNED)
  							  and convert(SUBSTR(cell.number,1,19),SIGNED)<=convert(SUBSTR(udcell.cellNumEnd,1,19),SIGNED)
  					)warehouseCellList,
  					t_unit.name seller,
  					(
  						select detail.warehouseCell from t_stock_detail detail
  							where seller.seller=detail.seller
  					)sellerWarehouseCellList
  					
  			 from t_stocktaking s,t_stocktaking_task_employee e,t_stocktaking_task t,
  			 	  t_stocktaking_task_user_defined_seller seller,
  			 	  t_seller ,t_unit
  			 <where>
  			 		t.stocktaking=s.number
  			 		and t.number=seller.stocktakingTask
  			 		and seller.seller=t_seller.number
  			 		and t_seller.unit=t_unit.number
  			 		and e.stocktakingTask=t.number
  			 		<if test="userCode!=null and userCode!=''">
  			 			and e.employee=#{userCode}
  			 		</if>
  			 </where> 		
  			 union
  			 
  			 select 
  					s.number,
  					(select text from t_dict_general where number=s.category)category,
  					(select text from t_dict_general where number=s.subCategory)subCategory,
  					s.stocktakingTime,
  					(select text from t_dict_general where number=s.state)state,
  					t.number taskNumber,
  					t.isSecondStocktaking secondStocktaking,
  					(select text from t_dict_general where number=t.state) taskState,
  					(
  						select ta.number from t_stocktaking_task_area ta
  						where ta.stocktakingTask=t.number
  					)warehouseAreaList,
  					(
  						select cell.number from t_stocktaking_task_user_defined_cell udcell,t_warehouse_cell cell
  						where udcell.stocktakingTask=t.number
  							  and convert(SUBSTR(cell.number,1,19),SIGNED)>=convert(SUBSTR(udcell.cellNumStart,1,19),SIGNED)
  							  and convert(SUBSTR(cell.number,1,19),SIGNED)<=convert(SUBSTR(udcell.cellNumEnd,1,19),SIGNED)
  					)warehouseCellList,
  					t_goods_sku.barCode sku,
  					(
  						select detail.warehouseCell from t_stock_detail detail
  							where sku.sku=detail.sku
  					)skuWarehouseCellList,
  			 from t_stocktaking s,t_stocktaking_task_employee e,t_stocktaking_task t,
  			 	  t_stocktaking_task_user_defined_sku sku,
  			 	  t_goods_sku
  			 <where>
  			 		t.stocktaking=s.number
  			 		and t.number=sku.stocktakingTask
  			 		and sku.sku =t_goods_sku.number
  			 		and e.stocktakingTask=t.number
  			 		<if test="userCode!=null and userCode!=''">
  			 			and e.employee=#{userCode}
  			 		</if>
  			 </where> 
  			 
  			 union 
  			 
  			 select 
  					s.number,
  					(select text from t_dict_general where number=s.category)category,
  					(select text from t_dict_general where number=s.subCategory)subCategory,
  					s.stocktakingTime,
  					(select text from t_dict_general where number=s.state)state,
  					scd.number taskNumber,
  					scd.isSecondStocktaking secondStocktaking,
  					(select text from t_dict_general where number=scd.state) taskState,
  					(
  						select ta.number from t_stocktaking_task_area ta
  						where ta.stocktakingTask=scd.number
  					)warehouseAreaList,
  					(
  						select cell.number from t_stocktaking_task_user_defined_cell udcell,t_warehouse_cell cell
  						where udcell.stocktakingTask=scd.number
  							  and convert(SUBSTR(cell.number,1,19),SIGNED)>=convert(SUBSTR(udcell.cellNumStart,1,19),SIGNED)
  							  and convert(SUBSTR(cell.number,1,19),SIGNED)<=convert(SUBSTR(udcell.cellNumEnd,1,19),SIGNED)
  					)warehouseCellList,
  					r.number firstRecord,
  					r.warehouseCell secondListWarehouseCell,
  					r.sku secondListSku
  			 from t_stocktaking s,t_stocktaking_task_employee e,t_stocktaking_task t,t_stocktaking_task scd
  			 		t_stocktaking_task_record r
  			 <where>
  			 		t.stocktaking=s.number
  			 		and scd.stocktaking=s.number
  			 		and e.stocktakingTask=t.number
  			 		and r.stocktakingTask=t.number
  			 		and r.stockQuantity!=r.stocktakingQuantity
  			 		and scd.isSecondStocktaking=1
  			 		<if test="userCode!=null and userCode!=''">
  			 			and e.employee=#{userCode}
  			 		</if>
  			 </where> 	


 
 
 

你可能感兴趣的:(今天写的一段复杂sql语句)