sql - 在同一个表中比较一列
问题描述
我有一张包含这些寄存器的表格
ColumnA ColumnB
apple 180725
banana 180725
apple 180724
我只想获取昨天和两天前出现的寄存器列A。
我怎么能在sql中做到这些。有两张桌子很容易,但一张桌子如何,我不知道如何制作。
谢谢和对不起我的英语!
解决方案
日期是 B 列
使用 DATE 数据类型保存日期是一种很好的做法。在 Oracle 中,我们可以对日期进行算术运算,因此实际上不需要将它们存储为数字,尤其是没有世纪的数字。
无论如何,自连接与任何其他连接一样,使用表别名来区分它们:
select t1.columnA
from your_table t1
inner join your_table t2
on t1.columnA = t2.columnA
where t1.columnB = to_number(to_char(sysdate,'yymmdd'))-1
and t2.columnB = to_number(to_char(sysdate,'yymmdd'))-2
这也可以
and t2.columnB = t1.columnB - 1
如果columnB
是 DATE 列,则 WHERE 子句将是:
where t1.columnB = trunc(sysdate)-1
and t2.columnB = trunc(sysdate)-2
推荐阅读
- html - 如何在 html 的 H1 标签中添加小文本?
- reactjs - ReactJS instance.render 不是函数
- r - 我在 R 中的 Deseq2 包中工作并尝试使用 write.csv(dataframe, file="file.csv") 导出数据,但无法获取文件中的数据
- charts - 谷歌图表 - 条形相互堆叠(重叠),而不是相互叠加
- ajax - 简单的 AJAX CALL 并在新的标签丢失帖子值中打开页面
- git - 如何配置 git 以显示日志图而不包装长提交消息
- file-permissions - Rsync:跳过设置了粘性位的文件
- indexing - 如何为 INDEX MATCH 函数使用两列中的一种选择?
- python - 在 PyGame 中移动对象并采用单个输入
- javascript - 单击 javascript 或 iframe 广告以显示按钮?