首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将Rowset变量转换为标量值

将Rowset变量转换为标量值
EN

Stack Overflow用户
提问于 2016-10-17 20:17:44
回答 2查看 3.2K关注 0票数 4

是否可以将行集变量转换为例如的标量值。

代码语言:javascript
复制
@maxKnownId =
    SELECT MAX(Id) AS maxID
    FROM @PrevDayLog;

DECLARE @max int = @maxKnownId;
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-10-17 22:20:11

谢谢你的意见,下面是商业案例-

我们有来自源的目录数据,需要生成唯一的ids。利用ROW_NUMBER() OVER() AS Id方法可以生成唯一的id。但是,在合并新记录的同时,它也会更改现有记录的it,并导致关系数据的问题。

下面是简单的解决方案

代码语言:javascript
复制
//get max id from existing catalog

@maxId =
    SELECT (int)MAX(Id) AS lastId
    FROM @ExistingCat;

//because @maxId is not scalar, we will do CROSS JOIN so that maxId is repeated for every record.
//ROW_NUMBER() always starts from 1, we can generate next Id with maxId+ROW_NUMBER()

@newRecordsWithId =
    SELECT (int)lastId + (int)ROW_NUMBER() OVER() AS Id,
           CatalogItemName
    FROM @newRecords CROSS JOIN @maxId;
票数 1
EN

Stack Overflow用户

发布于 2016-10-17 22:00:26

在U(尚未)中,没有将单个单元格行集隐式转换为标量值。

你对使用这个值有什么兴趣?

大多数情况下,您可以以不需要标量变量的方式编写U表达式。例如,如果您想在另一个查询中的条件中使用该值,则只需在连接中使用单个值行集与另一个查询(使用正确的统计信息,我非常肯定优化器会将其转换为广播连接)。

如果您觉得在没有行集的情况下很难将表达式写入标量,请通过http://aka.ms/adlfeedback提供您的场景来通知我们。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40094944

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档