我想为我在单选中创建的序列对象生成多个NEXT VALUE

时间:2016-04-08 20:19:48

标签: sql-server tsql

我们在数据库中创建了一个Sequence对象,我们试图从单个select语句中提取多个NEXT VALUE,但它不能正常工作。以下是我正在尝试的以下查询。

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的相同序列号。但我们需要不同的序号。任何人都可以帮助吗?如何在同一个查询对象中生成不同的序列号?

1 个答案:

答案 0 :(得分:1)

您在同一行中多次查询相同的序列。

documented

  

在查询或默认约束中使用NEXT VALUE FOR函数时,如果多次使用相同的序列对象,或者在提供值的语句中使用相同的序列对象,并且正在执行默认约束,将为引用结果集中某一行内相同序列的所有列返回相同的值。

要生成不同的数字,您需要在自己的行上查询每个数字。 如果您希望它们分为三列,则可以应用pivot子句。

您不能只将NEXT VALUE FOR移动到子查询,CTE或outer apply,以欺骗它生成不同的值。它不受支持。