sql按两列pivot_如何使用SQL PIVOT比较数据库中的两个表

sql按两列pivot

这很容易发生。 您可以通过添加新列来调整表:

ALTER TABLE payments ADD code NUMBER(3);

您继续执行您的业务逻辑–绝对没有问题。 但是,随后(也许在生产中)某些批处理作业失败,因为它对数据类型做出了一些强有力的假设。 即,它假定两个表paymentspayments_archive具有相同的行类型:

CREATE TABLE payments
  (
    id         NUMBER(18) NOT NULL,
    account_id NUMBER(18) NOT NULL,
    value_date DATE,
    amount     NUMBER(25, 2) NOT NULL
  );

CREATE TABLE payments_archive
  (
    id         NUMBER(18) NOT NULL,
    account_id NUMBER(18) NOT NULL,
    value_date DATE,
    amount     NUMBER(25, 2) NOT NULL
  );

由于具有相同的行类型,您可以简单地将一行从一个表移动到另一个表,例如,使用如下查询:

INSERT INTO payments_archive
SELECT * FROM payments
WHERE value_date < SYSDATE - 30;

(并不是说使用上面的语法通常是一个好主意,但这实际上不是一个好主意。但是您明白了)

您现在得到的是:

ORA-00913: too many values

解决的方法很明显,但是可能必须解决此问题的可怜的灵魂不是您,而是必须在数百个列中找出不匹配的列的其他人。 这是(在Oracle中)方法:

使用PIVOT比较两个表!

您当然不能使用PIVOT而只需从字典视图中的任何一个表中选择所有列:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值