提问人:ppdalal 提问时间:10/3/2022 最后编辑:ppdalal 更新时间:10/3/2022 访问量:76
联接类型和预期输出
Types of joins and expected output
问:
我有一个包含批发数据和零售数据的表。 数据的结构为
渠道 | 串行# | 日期 |
---|---|---|
WS-构建 | 12345 | 1/1/2019 |
WS-经销商 | 34567 | 1/5/2021 |
零售 | 12345 | 1/1/2020 |
零售 | 34567 | 3/5/2021 |
我希望输出与串行匹配#
每个序列号 # 将在表中出现两次。我正在尝试通过建筑商或经销商销售的单位数 #。
串行# | 渠道 | 批发日期 | 零售日期 |
---|---|---|---|
12345 | WS-构建 | 1/1/2019 | 1/1/2020 |
34567 | WS-经销商 | 1/5/2021 | 3/5/2021 |
我怎样才能通过加入同一张桌子来实现这一目标?
答:
0赞
SwaD
10/3/2022
#1
尝试通过串行和通道加入
select t1.serial#, t2.WholesaleDate, t2."Retail Date", (*) from table1 t1
join table2 t2 on t1.serial# = t2.serial# and t1.channel = t2.channel
group by t1.serial#, , t2.WholesaleDate, t2."Retail Date";
评论
0赞
odaiwa
10/3/2022
您的查询将不适用于此示例,因为如果您看到预期的输出,它与原始表不同,则还需要一列
0赞
ppdalal
10/3/2022
如果序列匹配,如何进行计数?
0赞
SwaD
10/3/2022
你应该具备什么样的条件?序列号和频道?还是别的什么?
0赞
ppdalal
10/3/2022
使用相同的表 1 创建预期的输出。但是,在输出中,我希望看到同一序列号的批发日期和匹配的零售日期#。
0赞
ppdalal
10/3/2022
@SwaD 它需要匹配的条件是首先找到数学序列 # 的 2 条记录,然后输出序列 # A 在日期 X 批发,在日期 Y 零售。我试图实现的是 X 个单位在批发建筑商中发货的年份(无论什么)与在批发经销商那里发货的 Y 单位在一年内售出(无论什么)
0赞
nbk
10/3/2022
#2
只要零售是售后,你就可以做到
但我不明白计数是从哪里来的
SELECT
t1."Serial#",t1."Channel", t1."Date" as WholesaleDate, t2."Date" as "Retail Date"
FROM tab1 t1 JOIN tab1 t2 ON t1."Serial#" = t2."Serial#" AND t1."Date" < t2."Date"
串行# | 渠道 | 批发日期 | 零售日期 |
---|---|---|---|
12345 | WS-构建 | 2019-01-01 00:00:00 | 2020-01-01 00:00:00 |
34567 | WS-经销商 | 2021-05-01 00:00:00 | 2021-05-03 00:00:00 |
SELECT 2
评论