代码之家  ›  专栏  ›  技术社区  ›  Charl

BIgQuery/SQL中的条件选择

  •  1
  • Charl  · 技术社区  · 4 年前

    忙着按照我最近的标准来整理一个抽象的数据集,我遇到了一个小麻烦。

    SELECT
      FORMAT_TIMESTAMP('%d-%m-%y', TIMESTAMP_MICROS(Event_Time)) AS Date,
      Campaign_ID,
      (SELECT Activity_ID WHERE Activity_ID IN ("9024844","9033733","9022293","9062686") as Sales),
      (SELECT Activity_ID WHERE Activity_ID IN ("9024799","9001112","9001133","9021942") as Leads),
      Site_ID_DCM,
      Ad_ID,
      REGEXP_EXTRACT(Other_Data, ';u1=(.+?);u') AS ProductCode, 
      REGEXP_EXTRACT(Other_Data, ';u5=(.+?);u') AS Big3OfferCode,
      REGEXP_EXTRACT(Other_Data, ';u7=(.+?);u') AS CID,
      REGEXP_EXTRACT(Other_Data, ';u50=(.+?);u') AS URL,
      DBM_Line_Item_ID
    FROM
      `fifth-tangent-233009.dtf_gmp_cm.p_activity_1187025`
    WHERE
      DATE(_PARTITIONTIME) = "2021-04-29"
    

    现在很明显,这些额外的选择不存在,但是我如何根据特定ID的值,从同一列Activity\u ID中有条件地选择一组ID(如果ID是Sales)和其他lead,然后在行中显示相应的ID。

    1 回复  |  直到 4 年前
        1
  •  1
  •   Gordon Linoff    4 年前

    case 你想要什么?

    (CASE WHEN Activity_ID IN ('9024844', '9033733', '9022293', '9062686') THEN Activity_ID) as Sales,
    (CASE WHEN Activity_ID IN ('9024799', '9001112', '9001133, '9021942') THEN Activity_ID END) as Leads,
    

    (Activity_ID IN ('9024844', '9033733', '9022293', '9062686')) as is_sale,
    (Activity_ID IN ('9024799', '9001112', '9001133', '9021942')) as is_Lead,