如何统计表中某一列的每个值?
我有一个这样的表:
UserID Customer ID status
1 1 1
1 2 1
1 3 1
1 4 2
1 5 1
1 6 3
1 7 2
2 8 1
2 9 2
........
我想总结一下这个表:
UserID count(status 1) count(status 2) count(status 3)
1 4 2 1
2 1 2 3
.........
我怎样才能在 PL/SQL 中做到这一点?
提前致谢
I have a table like this:
UserID Customer ID status
1 1 1
1 2 1
1 3 1
1 4 2
1 5 1
1 6 3
1 7 2
2 8 1
2 9 2
........
I want to summarize this table, to this:
UserID count(status 1) count(status 2) count(status 3)
1 4 2 1
2 1 2 3
.........
How can I do that in PL/SQL?
Thank in advance
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
您可以根据 UserId 进行分组并汇总不同的状态代码。
类似于:
您也可以考虑简单地根据 UserId 和状态进行分组,尽管结果当然有不同的布局:
You can group on UserId and sum up the different status codes.
Something like:
You might also consider simply grouping on UserId and status, although the result is of course differently laid out:
只是为了跟进@Vimvq1987和@Guffa评论:SQL的正确语法是
case ... end
,但对于PL/SQL它应该是case ... end case
,因此您提供的链接上的信息是正确的。因此,在 SQL 查询中(无论是在 SQL-Plus 中执行还是在 PL/SQL 中的 DML 中执行),您应该使用
case ... end
,但在 PL/SQL 例程中使用case 。 .. end case
是必需的。Just to follow up @Vimvq1987 and @Guffa comments: the correct syntax for SQL is
case ... end
, but for PL/SQL it sould becase ... end case
, so the information on the link you've provided is right.Hence in your SQL queries (either you execute it in SQL-Plus or in the DML in PL/SQL) you should use
case ... end
, but in PL/SQL routinescase ... end case
is required.