我们在数据库中创建了一个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的相同序列号。但我们需要不同的序号。任何人都可以帮助吗?如何在同一个查询对象中生成不同的序列号?
答案 0 :(得分:1)
您在同一行中多次查询相同的序列。
在查询或默认约束中使用
NEXT VALUE FOR
函数时,如果多次使用相同的序列对象,或者在提供值的语句中使用相同的序列对象,并且正在执行默认约束,将为引用结果集中某一行内相同序列的所有列返回相同的值。
要生成不同的数字,您需要在自己的行上查询每个数字。 如果您希望它们分为三列,则可以应用pivot子句。
您不能只将NEXT VALUE FOR
移动到子查询,CTE或outer apply
,以欺骗它生成不同的值。它不受支持。