SQL使用存在列数据更新新列上的所有行

时间:2016-07-27 16:25:29

标签: sql sql-server-2008

我最近在我们的一个表中添加了一个新列,需要包含另一列+ 365天的日期。单独更新每条记录是不可行的,我尝试过的所有内容都不起作用。主要是收到此错误:

子查询返回的值超过1。当子查询遵循=,!=,<,< =,>,> =或子查询用作表达式时,不允许这样做。

我最近尝试编写以下脚本。

PARENT COMPONENT

@Component {
  template: '
    <select (change)="onPaymentTypeChange($event.target.value)" class="form-control" id="paymentType" required>
      <option value="" disabled selected hidden>select payment type to begin</option>
      <option value="pmtCreditCard">Credit Card</option>
      <option value="pmtCheck">Check</option>
      <option value="pmtWire">Wire Transfer</option>
    </select>
    <app-payment [paymentTypeSelector]="paymentType"></app-payment>
  '
}
export class ParentComponent {
  onPaymentTypeChange(selectorValue) {
    console.log('paymentType ', this.paymentType);
    console.log('selectorValue ', selectorValue);
    this.paymentType = selectorValue;
  }
}


CHILD COMPONENT

@Component {
  inputs: [ 'paymentTypeSelector' ],
}

export class PaymentComponent implements OnInit {

  paymentTypeSelector: string;
  displayCheck = 'none';
  displayWire = 'none';

  constructor() {
    console.log('paymentTypeSelected', this.paymentTypeSelector);
  }

  ngOnInit() {
    console.log('here: ', this.paymentTypeSelector);
    this.togglePaymentDisplay(this.paymentTypeSelector)
  }

  togglePaymentDisplay(paymentType) {
    console.log('paymentTypeSelected', paymentType);
  }

}

enter image description here

4 个答案:

答案 0 :(得分:1)

这告诉您,您的唯一ID不是唯一的。此外,这些数据会在初始分配后发生变化吗?如果不是,您可以使用计算列。

答案 1 :(得分:1)

首先是功能正常的小样本。这意味着您的数据存在问题。

SQL DEMO

但是如果您使用的是单个表,请使用。 (我在我的样本中使用int而不是日期)

UPDATE A SET A.[enddate_dt ] = DATEADD(day,365, A.[appdate_dt])
FROM Table1 A;

enter image description here

答案 2 :(得分:0)

尝试看看这些是否真的很独特

SELECT A.uniqueid_c, COUNT(*)
FROM cd.mhc_appdiscfee A
GROUP BY A.uniqueid_c
HAVING COUNT(*) > 1

并且

SELECT B.uniqueid_c, COUNT(*)
FROM cd.mhc_appdiscfee B
GROUP BY B.uniqueid_c
HAVING COUNT(*) > 1

修改

另一项测试

 SELECT A.uniqueid_c,
        B.uniqueid_c,
        COUNT(*)
 FROM cd.mhc_appdiscfee A 
 INNER JOIN cd.mhc_appdiscfee B 
    ON B.uniqueid_c = A.uniqueid_c;
 GROUP BY A.uniqueid_c,
          B.uniqueid_c

答案 3 :(得分:0)

我在这里遗漏了什么吗?当然你可以这样做:

Update cd.mhc_appdiscfee set enddate_dt = DATEADD(day,365, appdate_dt)