时间:2016-10-05 19:31:56

标签: sql

我正在尝试根据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连接,它们都没有用。任何帮助都是适用的。

1 个答案:

答案 0 :(得分:0)

传递另一个变量,表示您是否要选择“Web”,相应地填写“是”或“否”。然后:

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

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