GBQ SQL:在WHERE语句中使用IF语句筛选数据

GBQ SQL:在WHERE语句中使用IF语句筛选数据,sql,google-bigquery,Sql,Google Bigquery,希望在满足多个条件时筛选数据。我的表格如下: ID STOCK TIME (datetime field) 1 0 2020-06-12T09:20:00.000 2 0 2020-06-11T09:20:00.000 3 10 2020-06-10T09:20:00.000 4 5 2019-01-12T09:20:00.000 5 0 2009-01-12T09:20:00.000 6 0

希望在满足多个条件时筛选数据。我的表格如下:

ID   STOCK   TIME (datetime field)
1    0       2020-06-12T09:20:00.000
2    0       2020-06-11T09:20:00.000
3    10      2020-06-10T09:20:00.000
4    5       2019-01-12T09:20:00.000
5    0       2009-01-12T09:20:00.000
6    0       2009-06-12T09:20:00.000
我需要保留满足以下任一条件的行:

  • 如果库存>0,则保留行

  • 如果STOCK 0或STOCK您的代码看起来基本正确。但可以简化为:

    WHERE STOCK > 0 OR 
          TIME >= DATETIME_ADD(CURRENT_DATETIME(), interval -14 day) 
    
    这有两个假设:

    • stock
      不是
      NULL
    • 时间不在未来

    这两个看起来都很合理。

    您的代码看起来基本正确。但可以简化为:

    WHERE STOCK > 0 OR 
          TIME >= DATETIME_ADD(CURRENT_DATETIME(), interval -14 day) 
    
    这有两个假设:

    • stock
      不是
      NULL
    • 时间不在未来

    这两者似乎都是合理的。

    您的表达式是正确的,同时建议在这种情况下使用括号以避免混淆,如下面的示例所示

    WHERE STOCK > 0 OR (STOCK <=0 AND TIME BETWEEN datetime_add(current_datetime(), interval -14 day) and current_datetime())    
    

    其中STOCK>0或(STOCK您的表达式是正确的,同时建议在这种情况下使用括号以避免混淆,如下面的示例所示

    WHERE STOCK > 0 OR (STOCK <=0 AND TIME BETWEEN datetime_add(current_datetime(), interval -14 day) and current_datetime())    
    
    其中库存>0或(库存