我试图生成基于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'
.