l--*_*''' -2 sql t-sql sql-server sql-server-2008
我有一个问题:
SELECT [outer].*,
(total_pain_patients / NULLIF ((SELECT Sum(total_pain_patients)
FROM [topplansperprovider]
WHERE [outer].[INDEX_IMSID] = [INDEX_IMSID]
AND plan_rank BETWEEN 1 AND 10), 0)) * 100 AS PercentOf,
pm.*,
percentof * pm.score
FROM [topplansperprovider] AS [outer]
left JOIN [payer Mapping] pm
on lower([outer].Plan_Name_OR_Payment_Type)=lower(pm.[ims payer name])
WHERE INDEX_IMSID = '1753841'
ORDER BY 6 ASC
Run Code Online (Sandbox Code Playgroud)
我的问题是选择这个:
percentof * pm.score
Run Code Online (Sandbox Code Playgroud)
由于percentof是派生列的别名,我不知道如何在其他列中使用它.
percentof * pm.score?percentof永久列添加到我的表中?您不能使用这样的别名,您必须将查询包装在另一个选择中:
select x.*, x.percentof*x.pm.score newvalue
from
(
SELECT [outer].*,
(total_pain_patients / NULLIF ((SELECT Sum(total_pain_patients)
FROM [topplansperprovider]
WHERE [outer].[INDEX_IMSID] = [INDEX_IMSID]
AND plan_rank BETWEEN 1 AND 10), 0)) * 100 PercentOf,
pm.*
FROM [topplansperprovider] AS [outer]
left JOIN [payer Mapping] pm
on lower([outer].Plan_Name_OR_Payment_Type)=lower(pm.[ims payer name])
) x
WHERE x.INDEX_IMSID = '1753841'
ORDER BY 6 ASC
Run Code Online (Sandbox Code Playgroud)
您正在计算的列别名percentof不能在另一列中使用,除非它在子查询中使用.