单查询两个相对组由



我试图生成基于SQL查询的报告。我需要生成一个有Source = "Web"的报告,另一个没有Source <> "Web"的报告。我读了很多关于这个的帖子,但是没有一个给我答案。下面的查询。

SELECT
  content_provider,
  provider_asset_id,
  device_id,
  carrier,
  T.profile_id,
  phonenumber,
  dma,
  CAST( asset_play_duration as decimal(15, 3) ) AS asset_play_duration,
  series_title,
  episode_title,
  source,
  vsession_id AS session_id,
  event_day
FROM
  (SELECT
    device_id,
    program_asset_id,
    vsession_id,
    source,
    vsession_start_ts,
    batchtime,
    vsession_end_ts,
    IF ( studio = '', network_tag, studio ) AS content_provider,
    provider_asset_id,
    carrier,
    profile_id,
    phonenumber,
    series_title,
    episode_title,
    content_type,
    dma,
    asset_play_duration,
    source,
    event_day,
    ROW_NUMBER() OVER (PARTITION BY device_id, program_asset_id, vsession_id, vsession_start_ts ORDER BY batchtime DESC) AS rank
  FROM ? ) T
LEFT JOIN ? tp
ON T.profile_id = tp.profile_id
WHERE tp.profile_id IS NULL
AND T.rank = 1
**AND T.source <> "Web"**
AND T.event_day BETWEEN ? AND ?

一份报告应具备上述条件(T.Source <>"web"),另一份报告应不具备过滤器(T.Source = "Web")。我尝试了Union和Inner join,两个都不起作用。任何帮助都是感激的。

传递另一个变量,用于是否选择"Web",并相应地填充'YES'或'NO'。然后:

AND ((? = 'YES' AND T.source = "Web") OR T.source <> "Web")

这里假设一个名为"Web"的列(无论如何,您可以将其称为Web而不加引号)。另一方面,如果Web应该是字符串,则使用单引号:'Web' .

最新更新