To solve Jason's investment problem, we need to maximize his return given the constraints on the investments in solar, wind, nuclear, and coal sectors. Let's denote the amount invested in each sector as follows: $s$ for solar, $w$ for wind, $n$ for nuclear, and $c$ for coal.

The objective function to maximize is the total return from all investments, which can be calculated using the given annual rates of return:
\[ \text{Maximize} \quad 0.06s + 0.09w + 0.12n + 0.03c \]

Given the constraints:
1. The amount invested in coal cannot exceed the amount invested in solar: $c \leq s$
2. The amount invested in wind cannot exceed the amount invested in nuclear: $w \leq n$
3. At most 10% of the investment can be in coal: $c \leq 0.1 \times 1000000 = 100000$
4. The total investment is $1000000: $s + w + n + c = 1000000$

All investments should be non-negative since Jason cannot invest a negative amount.

Let's convert this into Gurobi code in Python:

```python
from gurobipy import *

# Create a model
m = Model("Jason_Investment")

# Define variables
s = m.addVar(lb=0, name="solar")  # Investment in solar sector
w = m.addVar(lb=0, name="wind")   # Investment in wind sector
n = m.addVar(lb=0, name="nuclear") # Investment in nuclear sector
c = m.addVar(lb=0, name="coal")    # Investment in coal sector

# Objective function: Maximize total return
m.setObjective(0.06*s + 0.09*w + 0.12*n + 0.03*c, GRB.MAXIMIZE)

# Constraints
m.addConstr(c <= s, "Coal_not_exceed_Solar")
m.addConstr(w <= n, "Wind_not_exceed_Nuclear")
m.addConstr(c <= 100000, "Max_Coal_Investment")
m.addConstr(s + w + n + c == 1000000, "Total_Investment")

# Solve the model
m.optimize()

# Print results
if m.status == GRB.OPTIMAL:
    print("Optimal solution found.")
    print(f"Invest in Solar: ${s.x:.2f}")
    print(f"Invest in Wind: ${w.x:.2f}")
    print(f"Invest in Nuclear: ${n.x:.2f}")
    print(f"Invest in Coal: ${c.x:.2f}")
else:
    print("No optimal solution found.")
```