我正在选择一组记录,并且我想过滤XOR逻辑中的一列- IS NOT NULL xor IS NULL。
--basic
SELECT make, model
FROM cars
results
--------
ford taurus
ford (null)
toyota camry
toyota (null)
honda (null)
--Obviously XOR is not a real Oracle operator
--This is what I'm trying to do..
SELECT make, model
FROM cars
WHERE model IS NOT NULL
XOR model IS NULL
results (pulls records where model IS NOT NULL, falling back to NULL if necessary)
--------
ford taurus
toyota camry
honda (null)有谁能给我一些关于如何达到我想要的结果的见解?我正在努力解决这个问题!
非常感谢!
发布于 2011-04-29 21:18:08
SELECT make, model
FROM (
SELECT c.*,
ROW_NUMBER() OVER (PARTITION BY make ORDER BY model NULLS LAST) AS rn
FROM cars c
)
WHERE NOT (rn > 1 AND model IS NULL)发布于 2011-04-29 21:18:33
SELECT make, model
FROM cars
WHERE model IS NOT NULL
UNION -- Add makes that don't have any specific model
SELECT make, model
FROM cars
WHERE make NOT IN
(SELECT make
FROM cars
WHERE model IS NOT NULL)发布于 2011-05-03 19:02:31
我最初支持Klas Lindbäck的答案,但现在我想知道这是否会给出预期的结果:
SELECT make, model
FROM Cars
WHERE model IS NOT NULL
UNION
SELECT make, NULL
FROM Cars
MINUS
SELECT make, NULL
FROM cars
WHERE model IS NOT NULL;https://stackoverflow.com/questions/5832473
复制相似问题