sql >> Databasteknik >  >> RDS >> Mysql

WHERE-villkorsproblem i SQL

Jag tror att du försöker komma åt validFrom och validTo från ärendefrågan i where-tillståndet. Om så är fallet måste du formatera om din fråga.

SELECT t1.* FROM ( SELECT mPrice, aPrice, 
CASE 
    WHEN validFrom < '2013-11-01' 
        THEN '2013-11-01' 
    ELSE validFrom END AS validFrom, 

CASE 
    WHEN validTo > '2013-11-30' 
        THEN '2013-11-30' 
    ELSE validTo END AS validTo 

FROM commission) t1 

WHERE ((t1.validfrom BETWEEN '2013-11-01' AND '2013-11-30') OR (t1.validto BETWEEN '2013-11-01' AND '2013-11-30')) ORDER BY t1.validFrom

Men detta ger 3 resultat. Om du behöver få det förväntade resultatet måste du använda en AND villkor istället för OR .

Då blir din fråga

SELECT t1.* FROM ( SELECT mPrice, aPrice, 
CASE 
    WHEN validFrom < '2013-11-01' 
        THEN '2013-11-01' 
    ELSE validFrom END AS validFrom, 

CASE 
    WHEN validTo > '2013-11-30' 
        THEN '2013-11-30' 
    ELSE validTo END AS validTo 

FROM commission) t1 

WHERE ((t1.validfrom BETWEEN '2013-11-01' AND '2013-11-30') AND (t1.validto BETWEEN '2013-11-01' AND '2013-11-30')) ORDER BY t1.validFrom


  1. Hur man söker efter ett kommaseparerat värde

  2. Villkorsparametrar för frågebyggaren

  3. SQLT i 12c kan inte samla in statistik

  4. Hur man konverterar versaler till gemener i MySQL