我们在数据库中创建了一个Sequence对象,我们试图从单个select语句中提取多个下一个值,但它并不是这样工作的。下面是我正在尝试的以下查询。
Select
1 as PracticeId,
NAME_1 as LocationN1Text,
NAME_2 as LocationN2Text,
federal_tax_id as FTaxId,
NULL as NameAbb,
NEXT VALUE for UPS.Seq_Communication AS CommunicationId1,
NEXT VALUE for UPS.Seq_Communication AS CommunicationId2,
NEXT VALUE for UPS.Seq_Communication AS CommunicationId3,
FROM
[Staging_ETR] A
但是上面的查询为CommunicationId1、CommunicationId2和communicationId3获得了相同的序列号。但我们需要不同的序列号。有人能帮忙吗?如何从同一个序列对象中在相同的select查询中生成不同的序列号?
发布于 2016-04-08 12:37:08
您正在同一行中多次查询相同的序列。
是记录在案:
当在查询或默认约束中使用
NEXT VALUE FOR
函数时,如果使用同一个序列对象不止一次,或者在提供值的语句中同时使用相同的序列对象,并且在执行默认约束时,将为结果集中的行中引用相同序列的所有列返回相同的值。
要生成不同的数字,您需要查询它自己行上的每个数字。如果要将它们放在三列中,则可以应用透视子句。
您不能仅仅将NEXT VALUE FOR
移动到子查询、CTE或outer apply
以欺骗它生成不同的值。它没有在那里得到支持。
https://stackoverflow.com/questions/36508638
复制相似问题