是否可以将行集变量转换为例如的标量值。
@maxKnownId =
SELECT MAX(Id) AS maxID
FROM @PrevDayLog;
DECLARE @max int = @maxKnownId;发布于 2016-10-17 22:20:11
谢谢你的意见,下面是商业案例-
我们有来自源的目录数据,需要生成唯一的ids。利用ROW_NUMBER() OVER() AS Id方法可以生成唯一的id。但是,在合并新记录的同时,它也会更改现有记录的it,并导致关系数据的问题。
下面是简单的解决方案
//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;发布于 2016-10-17 22:00:26
在U(尚未)中,没有将单个单元格行集隐式转换为标量值。
你对使用这个值有什么兴趣?
大多数情况下,您可以以不需要标量变量的方式编写U表达式。例如,如果您想在另一个查询中的条件中使用该值,则只需在连接中使用单个值行集与另一个查询(使用正确的统计信息,我非常肯定优化器会将其转换为广播连接)。
如果您觉得在没有行集的情况下很难将表达式写入标量,请通过http://aka.ms/adlfeedback提供您的场景来通知我们。
https://stackoverflow.com/questions/40094944
复制相似问题