我有一个'结算'表,代表我订阅者的所有帐单实例。订户可以有多个账单。
我有一个简单的SQL请求:
SELECT count(billing_id),subscriber_id
FROM billing
group by subscriber_id
因此,我列出了我所有订户的订单数量。 我想要一个没有按订阅者分组的所有账单的列表,但我希望每行中出现上一个请求的结果。
实施例: 我之前请求的结果:
sub_id nb_billings
1 3
2 2
我想要的是什么:
sub_id nb_billings
1 3
1 3
1 3
2 2
2 2
由于
答案 0 :(得分:1)
您可以使用子查询来执行此操作:
SELECT
(SELECT count(t2.billing_id) FROM billing t2 WHERE t2.subscriber_id = t1.subscriber_id),
t1.subscriber_id
FROM billing t1
答案 1 :(得分:1)
我会这样做;
SELECT
b.subscriber_id
,a.billing_count
FROM billing b
JOIN (SELECT subscriber_id, count(billing_id) billing_count FROM billing GROUP BY subscriber_id) a
ON b.subscriber_id = a.subscriber_id
子查询计算出订阅者的billing_id计数,然后将其连接到原始表的所有行(使用subscriber_id)。这应该给出你想要的结果。
答案 2 :(得分:1)
我想这应该足够了:
SELECT s.subscriber_id,
s.billing_id,
s.TotalCount
FROM (
SELECT subscriber_id,
billing_id,
COUNT(billing_id) AS TotalCount
FROM BILLING
GROUP BY subscriber_id,
billing_id
) s
GROUP BY s.subscriber_id,
s.TotalCount,
s.billing_id
ORDER BY s.subscriber_id
这应该给你如下结果:
subscriber_id billing_id TotalCount
1 10a 2
1 10b 2
1 10c 1
2 10a 1
2 10b 1
2 10c 3
2 10d 1
你可以在这里看到 - > http://rextester.com/AVVS23801
希望这会有所帮助!!
答案 3 :(得分:-1)
select subscriber_id,count(billing_id)over(partition by subscriber_id)
from billing
会做到这一点。