Sql server 使用条件条件更改行数,如操作
使用SQL server 2012。我使用变量来确定在整个数据集中满足各种标准的次数。我想取其中的一半,先做一件事,然后再做另一半事。当我只包含那些满足条件的实例时,它可以正常工作。但我想用3或4个不同版本的不同标准对我的整个数据集执行此操作 我的第一次尝试是在满足各种条件时尝试更改@CriteriaMetCount的值,并使用该计数执行前半部分或后半部分,但这不起作用。有没有一种方法可以根据不同的标准进行划分,然后使用不同的标准集Sql server 使用条件条件更改行数,如操作,sql-server,variables,data-partitioning,Sql Server,Variables,Data Partitioning,使用SQL server 2012。我使用变量来确定在整个数据集中满足各种标准的次数。我想取其中的一半,先做一件事,然后再做另一半事。当我只包含那些满足条件的实例时,它可以正常工作。但我想用3或4个不同版本的不同标准对我的整个数据集执行此操作 我的第一次尝试是在满足各种条件时尝试更改@CriteriaMetCount的值,并使用该计数执行前半部分或后半部分,但这不起作用。有没有一种方法可以根据不同的标准进行划分,然后使用不同的标准集 declare @TargetNumber BIGINT de
declare @TargetNumber BIGINT
declare @TargetHalf BIGINT
declare @CriteriaMetCount BIGINT
set @CriteriaMetCount=1
Set @TargetNumber=(
select count(distinct(AI2.AccountID)) from Table_AccountInfo AI2
where
AI2.OrgID in (
select distinct(Org2.OrgID) from Table_Organization Org2
where Org2.OrganizationName like ('%Name%'))
and (various criteria here)
)
Set @TargetHalf= (select iif(
(@TargetNumber%2)>0,((@TargetNumber+1)/2),(@TargetNumber/2)))
select AI.AccountID, @targethalf, @targetnumber,ROW_Number() over(order by AI.AccountID) AS ROW_COUNT,
case when ((ROW_Number() over(order by AI.AccountID))<=@targethalf) then 'first_half_thing' else 'second_half_thing' end,
iif(((ROW_Number() over(order by AI.AccountID))%2=0),(@CriteriaMetCount+1),@CriteriaMetCount)
from Table_AccountInfo LI
where AI.AccountID >= @TargetNumber
and AI.OrgID in (
select distinct(Org.OrgID) from Table_Organization Org
where Org.OrganizationName like ('%Name%'))
and (various criteria here)
好的,我这样做了:添加了一个临时表,第一个操作评估了整个数据集的各种条件,然后做了一个简单的案例,检查当前帐户ID与临时表中存储的帐户ID 我第一次以这样的方式使用临时表,它成功了,所以你就这样做了