我有一个有多列的表。比如,列是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的值。
答案 0 :(得分:0)
您的数据是否如下所示:
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')