将同一列的日期分为多行,直到指定下一个日期值-SQL Server-英雄云拓展知识分享
252
2024-01-22
我们有一个“数字”表,其单个值'n'中保存0⑴0000值。我们的TableX已计算了dateTime和一个术语。我们正在尝试填充TableX中在给定日期中没有匹配的孔。但是,这仿佛不会产生null或0的无匹配...
select term, avg(total::float)
, date_trunc('day', series.date) as date1
, date_trunc('day', calculated_at) as date2
from (select
(current_tiMEStamp - interval '1 day' * numbers.n)::date as date
from numbers) as series
![红移全外连接未输出null-英雄云拓展知识分享 红移全外连接未输出null-英雄云拓展知识分享](https://www.yingxiongyun.com/news/zb_users/cache/ly_autoimg/m/MTMyODM.pjp)
full outer join terms
on series.date = date_trunc('day', calculated_at)
where series.date BETWEEN '2017-07-01' AND '2017-07⑶0'
AND (term in ('term111') or term is null)
group by term
, date_trunc('day', series.date)
, date_trunc('day', calculated_at)
order by date_trunc('day', series.date) asc
这 full outer join
很好。问题是过滤器。这些真的很辣手 full outer join
。我建议:
select t.term, avg(total::float),date_trunc('day', series.date) as date1,
date_trunc('day', calculated_at) as date2
from (select (current_timestamp - interval '1 day' * numbers.n)::date as date
from numbers
where (current_timestamp - interval '1 day' * numbers.n)::date BETWEEN '2017-07-01' AND '2017-07⑶0'
) series full outer join
(select t.*
from terms
where term = 'term111'
) t
on series.date = date_trunc('day', t.calculated_at)
group by t.term, date_trunc('day', series.date), date_trunc('day', calculated_at)
order by date_trunc('day', series.date) asc;
我的猜想是 left join
会做你想做的。我怀疑一个 full outer join
是您真正打算的。如果您有疑问,请问 其他 发问并提供样本数据和所需结果。
免责声明:
本网址(www.yingxiongyun.com)发布的材料主要源于独立创作和网友匿名投稿。此处提供的所有信息仅供参考之用。我们致力于提供准确且可信的信息,但不对材料的完整性或真实性作出任何保证。用户应自行验证相关信息的正确性,并对其决策承担全部责任。对于由于信息的错误、不准确或遗漏所造成的任何损失,本网址不承担任何法律责任。本网站所展示的所有内容,如文字、图像、标志、音频、视频、软件和程序等的版权均属于原创作者。如果任何组织或个人认为网站内容可能侵犯其知识产权,或包含不准确之处,请即刻联系我们进行相应处理。
发表评论
暂时没有评论,来抢沙发吧~