我有一个包含subscriber_IDs,total,Tax_id和DOS的表(#update图片)。 total是订阅者在相同服务日期DOS下向tax_id位置支付的访问次数。我正在尝试创建另一个列,为具有最高访问次数的tax_id分配1,为同一订户和DOS分配0到所有其他Tax_ids。我有许多不同的订户,所以我需要一个通用代码,图片描绘了一个只有一个订户的例子。
期望的最终结果列MM(期望的结果图片)
SELECT SUBSCRIBER_ID, Total, TAX_ID, DOS,
case WHEN Total = max(Total) then 1 ELSE 0 END as MM
FROM #Update3
GROUP BY SUBSCRIBER_ID, PAY_TO_PROVIDER_TAX_ID, DOS, Total
这就是我所拥有的,但是它为MM列中的每一行返回一个,而我在行中只需要1,总计3,而在所有其他行中都需要0。我需要这个工作在具有不同tax_ids和服务日期的不同订阅者列表上。
答案 0 :(得分:1)
我认为你需要这些方面的东西。
with MyTotal as
(
select MaxTotal = MAX(Total)
from #Update3
)
SELECT SUBSCRIBER_ID
, Total
, TAX_ID
, DOS
, case WHEN Total = mytot.MaxTotal then 1 ELSE 0 END as MM
FROM #Update3
cross join MyTotal