如何在范围或列中搜索列名称为null

时间:2016-10-12 13:41:00

标签: sql

我正在编写一个查询,其中我有一个包含年龄列表的表,此列可以有NULLS。我一直试图得到一个包含18岁以上用户的结果,如果用户年龄为NULL,我也希望得到这个结果。以下是我在下面尝试做的简化版本以及结果。

SELECT * FROM TABLE WHERE (Table.Column >= 18 OR Table.Column IS NULL)

- 回复所有年龄段的用户和空白

SELECT * `FROM TABLE WHERE ((Table.Column >= 18) OR (Table.Column IS NULL))

- 回复所有年龄段的用户和空白

SELECT * FROM TABLE WHERE (Table.Column >= 18 NOT BETWEEN 1 AND 17)

- 只返回18岁以上的用户,不返回NULLS

SELECT * `FROM TABLE WHERE ((Table.Column >= 18)

- 只返回18岁以上的用户,不返回NULLS

对可能发生的事情的任何见解都将是一种祝福。这是1300行查询的一部分,这是我能够简化它的最佳方法。我可能需要你记住,可能还有其他事情我无法解释,也许是一个黑客的工作有序。

进一步详细说明,在psuedo代码中,整个查询如下。

      SELECT ColumnA, ColumnB,
        CASE
        WHEN (Condition 1),
        WHEN (Condition 2)
    ELSE 'N/A' END AS [Complete],
        CASE
        WHEN (Condition 1),
        WHEN (Condition 2)
    ELSE Column END AS [Column],
    ColumnC, ColumnD
    FROM
    LEFT OUTER JOIN Table A on A.Column = B.Column
    LEFT OUTER JOIN Table C on A.Column = B.Column
    LEFT OUTER JOIN Table D on A.Column = C.Column
WHERE (
Condition1,
and Condition2,
and (Table.Column >= 18 OR Table.Column IS NULL)
)UNION
SELECT
MAX([column]) AS [column],
MAX([MyColumn] AS [My Column],
FROM (
SELECT 
column],
MyColumn,
CASE
WHEN (Condition 1),
WHEN (Condition 2)
else 'N/A' end as [Complete]
CASE
WHEN (Condition 1),
WHEN (Condition 2)
ELSE Column END AS [Column],
Column3
WHERE (Condition1)
AND Condition2
)
and (Table.Column >= 18 OR Table.Column IS NULL)
GROUP BY [ColumnName]
UNION
SELECT * FROM TABLE

1 个答案:

答案 0 :(得分:0)

对于我的情况,我必须把三个不同的子查询中的三个表放在一起,从那里我把我的where子句

select Terr, Product
into ttl
from sdata s
join md m on s.PSetID = m.PsetID