0

我有一个有多个列的表。比如说,列是 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 提供值。

4

1 回答 1

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')
于 2013-07-10T15:45:03.070 回答