从同一个表更新表

时间:2018-04-08 14:30:37

标签: sql-server common-table-expression

我有一个数据集,我想在其中更新列java.util.List

更新基于同一个表的内容,示例数据如下所示:

BEFORE

搜索后应该更新该列,以查看该站是否有先前的接受以及这是什么?

如果我们选择所有DISTINCT' ACCEPTID'对于A站,我们会得到以下内容。

DISTINCT ACCEPT IDS

我想使用这个DISTINCT ACCEPTID来填充' PREVACCEPTID'。

所以,如果我有一个条目,例如' 142692',我会查找子表并检查是否存在任何先前的ACCEPTID,如果是这种情况填充前一个,在这种情况下' 142691' (见结果表后填写)

我现在尝试了一些事情,我收到了以下错误:

PREVACCEPTID

我收到此错误:

  

Msg 157,Level 15,State 1,Line 326
  聚合可能不会出现在UPDATE语句的集合列表中。

最终结果如下:

AFTER

我认为cte是更好的选择,但我从未使用过。

提前致谢。

1 个答案:

答案 0 :(得分:1)

如果我正确地解释了您的问题和后续评论,我假设您希望将先前的AcceptID填充为共享相同Station和Period的给定行集的最后一个AcceptID。最后我假设将由时间组件(StackDate和QTime)定义。并且,在给定的Station和Period只有一行的情况下,您希望将Previous AcceptID设置为与该行的AcceptID相同。

在上述条件下,以下是一个可行的查询。 注意:将表'Test'替换为您自己的表名。

func createTextLayer() {
    let textLayer = CATextLayer()
    textLayer.frame = CGRect(x: view.center.x - 150, y: view.frame.size.height / 2, width: 300, height: 300)

    let layerText = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce auctor arcu quis velit congue dictum. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce auctor arcu quis velit congue dictum."

    let paragraphStyle = NSMutableParagraphStyle()
    paragraphStyle.firstLineHeadIndent = 10
    paragraphStyle.headIndent = 10
    paragraphStyle.tailIndent = 10
    paragraphStyle.minimumLineHeight = 38
    paragraphStyle.alignment = .center

    let textAttributes: [NSAttributedStringKey : Any] = [
        .font: UIFont(name: "HelveticaNeue-Bold", size: 18)!,
        .foregroundColor: UIColor.white,
        .backgroundColor: UIColor.black,
        .baselineOffset: 10,
        .paragraphStyle: paragraphStyle
        ]

    textLayer.string = NSMutableAttributedString(string: layerText, attributes: textAttributes)
    textLayer.backgroundColor = UIColor.clear.cgColor
    textLayer.isWrapped = true
    textLayer.contentsScale = UIScreen.main.scale
    textView.layer.addSublayer(textLayer)
}