我正在尝试根据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连接,它们都没有用。任何帮助都是适用的。
答案 0 :(得分:0)
传递另一个变量,表示您是否要选择“Web”,相应地填写“是”或“否”。然后:
AND ((? = 'YES' AND T.source = "Web") OR T.source <> "Web")
这假设是一个名为"Web"
的列(无论如何你都可以调用Web
而不引号)。如果Web
应该是字符串,则另一方面,您使用单引号:'Web'
。