我对SQL比较陌生,我有一个简短的问题。我已经在stackOverflow中搜索了类似的问题,但没有找到任何东西。我已经创建了一些视图。这些观点从一个版本到另一个版本都有变化。为了使客户更容易进行迁移,我想过滤两个版本之间列的data_types的差异。目前我正在使用PostgreSQL版本11.16
我有一个表,看起来像这样:
| 版本编号|安装时间戳|列名|数据类型|
| - -----|- -----|- -----|- -----|
| D1| 2023-06-02 06:42:14.531588| t0801_01|整数|
| D1| 2023-06-02 06:42:14.531588| t0801_04|性状变异|
| D2| 2023-07-02 06:42:14.531588| t0801_01|整数|
| D2| 2023-07-02 06:42:14.531588| t0801_04|整数|
现在,我想找到两个版本之间data_type列的值发生了更改的所有行。所以我期待以下结果:
| 版本编号|安装时间戳|列名|数据类型|
| - -----|- -----|- -----|- -----|
| D1| 2023-06-02 06:42:14.531588| t0801_04|性状变异|
| D2| 2023-06-02 06:42:14.531588| t0801_04|整数|
我试过的是:SELECT DISTINCT ON (column_name, data_type) column_name, data_type FROM mytable WHERE versionsnummer = 'D1' OR versionsnummer = 'D2';
不幸的是,我没有得到预期的结果与此查询。你能告诉我我哪里做错了吗?非常感谢:)
1条答案
按热度按时间2g32fytz1#
我认为你可以通过“自我加入”来实现这一点。在“column_name”列上连接表本身。
下面是代码:
示例:如果选择表中的所有列,则将获得:
| 版本编号|安装时间戳|列名|数据类型|
| - -----|- -----|- -----|- -----|
| D1| 2023-06-02 06:42:14.531| t0801_04|字符变化|
| D2| 2023-07-02 06:42:14.531| t0801_04|整数|
测试here: