最大值的sql标志

时间:2017-09-21 19:06:44

标签: sql sql-server

https://i.stack.imgur.com/GEwk3.png

我有一个包含subscriber_IDs,total,Tax_id和DOS的表(#update图片)。 total是订阅者在相同服务日期DOS下向tax_id位置支付的访问次数。我正在尝试创建另一个列,为具有最高访问次数的tax_id分配1,为同一订户和DOS分配0到所有其他Tax_ids。我有许多不同的订户,所以我需要一个通用代码,图片描绘了一个只有一个订户的例子。

期望的最终结果列MM(期望的结果图片)

https://i.stack.imgur.com/Fkgx7.png

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和服务日期的不同订阅者列表上。

1 个答案:

答案 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