如何在SQL查询中添加条件语句?

时间:2019-04-09 11:52:40

标签: sql postgresql

嗨,我正在处理一个SQL查询。下面是我执行查询的方法名称。

private string GetAggregatedOptionParametersByStyleIdCommand(string styleId, bool currentStore)
    {
      SELECT
      opts.style, opts.option::text as {OptionKey}, opts.primary_colour, opts.secondary_colour, opts.brand_description, opts.description, params.*,
    CASE WHEN {currentStore} == true THEN 
    FROM
      rex.options opts
    JOIN
      rex.product_atoms atoms ON atoms.option_id = opts.option
    JOIN
      rex.parameters params ON atoms.id = params.product_atom_id
    JOIN
      rex.stores stores ON params.store = stores.id
    WHERE
      opts.style = '{styleId}'
  }

以下是stores表的结构。

CREATE TABLE rex.stores (
    id serial NOT NULL,
    close_date timestamp NOT NULL,
    country text NULL,
    distribution_centre text NULL,
    "name" text NULL,
    open_date timestamp NOT NULL,
    CONSTRAINT "PK_stores" PRIMARY KEY (id)
);

所以我想做的是,只要currentStore为true,那么我想返回当前商店。检查currentStore的条件是

 store.OpenDate <= currentDate &&
          store.CloseDate >= currentDate

每当currentStore为false时,我都想返回所有商店。要检查所有存储条件是

store.CloseDate >= currentDate

我正在尝试在SQL查询中添加这些条件。我已经添加了CASE WHEN {currentStore} == true THEN,但不确定如何添加关闭的商店条件。谁能帮助我完成此查询?任何帮助,将不胜感激。谢谢。

1 个答案:

答案 0 :(得分:0)

如果要检查其他可能性,可以在WHEN语句中添加另一个ELSECASE条件。这些需要放在END之前。

例如:

CASE
    WHEN x < 0 THEN 'negative'
    WHEN x > 0 THEN 'positive'
    ELSE 'zero'
END

我对postgres并不熟悉,您可能不需要END,并且您也可以说CASE x WHEN > 0 THEN... WHEN < 0 ...,这意味着您只需要在CASE之后提及x。再次,这在postgres中可能不是问题。