我有一个有多个列的表。比如说,列是 C1、C2、C3 和 C4。
C1 contains daytime,
C2 contains names,
C3 is the numeric values and
C4 have 2 values repeatedly say a and b.
现在我需要以这样一种方式查询数据,即对于白天,应返回 C3 中对应于 a.C4 的值。如果 C3 没有 a.C4 的值,它应该在 C3 中为 b.C4 提供值。
您的数据是否如下所示:
Jan12, Tom, 1, a
Jan12, Tom, 2, b
Jan13, Bob, 3, a
Jan14, Sue, 4, b
我认为您说您想运行(查询 1):
SELECT C3 from TBL WHERE C1=<Datetime> and C4='a' and C3 is not null
但是,如果没有找到记录,您需要运行(查询 2):
SELECT C3 from TBL WHERE C1=<Datetime> and C4='b'
如果这是您的目标,请考虑第二个查询。要省略通过第一个查询返回记录的任何内容,您可以这样做(仅注意修改的第二个查询)(查询 2A):
SELECT C3 from TBL WHERE C1=<Datetime> and C4='b'
and NOT EXISTS (SELECT * from TBL WHERE C1=<Datetime> and C4='a')
因此,您现在有两个查询,结果互斥。您可以简单地将它们联合在一起并将它们作为一个运行(最终,组合查询)。
SELECT C3 from TBL WHERE C1=<Datetime> and C4='a' and C3 is not null
UNION ALL
SELECT C3 from TBL WHERE C1=<Datetime> and C4='b'
and NOT EXISTS (SELECT * from TBL WHERE C1=<Datetime> and C4='a')