вы можете попробовать использовать IFNULL()
для значений и использовать getdate()
, поэтому, если бы оно было нулевым, его просто использовали бы сегодня, и тогда это не будет считаться наименьшим, который в основном игнорирует их.
нравится: LEAST(IFNULL(A,getdate()), IFNULL(B,getdate()), IFNULL(C,getdate()), IFNULL(D,getdate()))
надеюсь, это может подтолкнуть вас в правильном направлении
, если NA
не является строкой, в которой вы можете использовать оператор case, например case when A = 'NA' THEN getdate() end
может выглядеть как
SELECT * FROM myTable
WHERE organisation LIKE Ikea
LEAST(IFNULL(A,getdate()), IFNULL(B,getdate()), IFNULL(C,getdate()), IFNULL(D,getdate())) >= '2018-05-01' AND
LEAST(IFNULL(A,getdate()), IFNULL(B,getdate()), IFNULL(C,getdate()), IFNULL(D,getdate())) < '2018-06-01'
или
SELECT * FROM myTable
WHERE organisation LIKE Ikea
LEAST(case when A = 'NA' THEN getdate() else A end, case when B = 'NA' THEN getdate() else B end, case when C = 'NA' THEN getdate() else C end, case when D = 'NA' THEN getdate() else D end) >= '2018-05-01' AND
LEAST(case when A = 'NA' THEN getdate() else A end, case when B = 'NA' THEN getdate() else B end, case when C = 'NA' THEN getdate() else C end, case when D = 'NA' THEN getdate() else D end) < '2018-06-01'