我正在编写一个查询,其中我有一个包含年龄列表的表,此列可以有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
答案 0 :(得分:0)
对于我的情况,我必须把三个不同的子查询中的三个表放在一起,从那里我把我的where子句
select Terr, Product
into ttl
from sdata s
join md m on s.PSetID = m.PsetID