Reputation: 35
My data consists of 1024 rows and 2 columns.Its structure looks like
I want to select three intervals from a single table based on first column. In that selected intervals second column values should be multiplied by values
SELECT * FROM del
WHERE wavelength BETWEEN 341 AND 348
OR wavelength BETWEEN 551 AND 664
OR wavelength BETWEEN 998 AND 1021
In this one, intervals are selected using this query and
After multiplication i want to display the wavelength and multiplied reflectance values in second column
Upvotes: 0
Views: 158
Reputation: 1477
As the first and third range is to be multiplied by 0.25
and the second by 0.5
you can use the below query.
SELECT wavelength,
( reflect * 0.25 ) AS reflect
FROM wavelength
WHERE ( wavelength BETWEEN 341 AND 348 )
OR ( wavelength BETWEEN 998 AND 1021 )
UNION ALL
SELECT wavelength,
( reflect * 0.5 ) AS reflect
FROM wavelength
WHERE wavelength BETWEEN 551 AND 664;
if all three are to be multiplied by different values you can use
SELECT wavelength,
( reflect * 0.25 ) AS reflect
FROM wavelength
WHERE wavelength BETWEEN 341 AND 348
OR wavelength BETWEEN 998 AND 1021
UNION ALL
SELECT wavelength,
( reflect * 0.5 ) AS reflect
FROM wavelength
WHERE wavelength BETWEEN 551 AND 664
UNION ALL
SELECT wavelength,
( reflect * 0.25 ) AS reflect
FROM wavelength
WHERE wavelength BETWEEN 998 AND 1021
demo at http://sqlfiddle.com/#!2/2c41b/10
Upvotes: 2
Reputation: 1216
Try this:
SELECT wavelength,
CASE WHEN wavelength BETWEEN 551 AND 664 THEN reflectance * .5
ELSE reflectance * .25
END AS 'REFLECTANCE'
FROM del
WHERE wavelength BETWEEN 341 AND 348
OR wavelength BETWEEN 551 AND 664
OR wavelength BETWEEN 998 AND 1021
or a common select:
SELECT wavelength,
CASE WHEN (wavelength BETWEEN 341 AND 348)
OR (wavelength BETWEEN 998 AND 1021) THEN reflectance * .25
WHEN wavelength BETWEEN 551 AND 664 THEN reflectance * .5
ELSE 1 ---(PUT YOUR DEFAULT)
END AS 'REFLECTANCE'
FROM del
Upvotes: 2