如何将多个 Select 语句放入不同的列中
我基本上有 7 个 select 语句,我需要将结果输出到单独的列中。通常我会为此使用交叉表,但我需要一种快速有效的方法来解决此问题,因为表中有超过 70 亿行。我正在使用vertica数据库系统。以下是我的陈述的示例:
SELECT COUNT(user_id) AS '20100101' FROM event_log_facts WHERE date_dim_id=20100101
SELECT COUNT(user_id) AS '20100102' FROM event_log_facts WHERE date_dim_id=20100102
SELECT COUNT(user_id) AS '20100103' FROM event_log_facts WHERE date_dim_id=20100103
SELECT COUNT(user_id) AS '20100104' FROM event_log_facts WHERE date_dim_id=20100104
SELECT COUNT(user_id) AS '20100105' FROM event_log_facts WHERE date_dim_id=20100105
SELECT COUNT(user_id) AS '20100106' FROM event_log_facts WHERE date_dim_id=20100106
SELECT COUNT(user_id) AS '20100107' FROM event_log_facts WHERE date_dim_id=20100107
应该返回类似以下内容:
20100101 | 20100102 | 20100103 | 20100104 | 20100105 | 20100106 | 20100107
1234 | 1234 | 36564 | 45465 | 356754 | 3455 | 4556675
I basically have 7 select statements that I need to have the results output into separate columns. Normally I would use a crosstab for this but I need a fast efficient way to go about this as there are over 7 billion rows in the table. I am using the vertica database system. Below is an example of my statements:
SELECT COUNT(user_id) AS '20100101' FROM event_log_facts WHERE date_dim_id=20100101
SELECT COUNT(user_id) AS '20100102' FROM event_log_facts WHERE date_dim_id=20100102
SELECT COUNT(user_id) AS '20100103' FROM event_log_facts WHERE date_dim_id=20100103
SELECT COUNT(user_id) AS '20100104' FROM event_log_facts WHERE date_dim_id=20100104
SELECT COUNT(user_id) AS '20100105' FROM event_log_facts WHERE date_dim_id=20100105
SELECT COUNT(user_id) AS '20100106' FROM event_log_facts WHERE date_dim_id=20100106
SELECT COUNT(user_id) AS '20100107' FROM event_log_facts WHERE date_dim_id=20100107
should return something like:
20100101 | 20100102 | 20100103 | 20100104 | 20100105 | 20100106 | 20100107
1234 | 1234 | 36564 | 45465 | 356754 | 3455 | 4556675
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
将它们括在括号中,添加逗号并选择它们:)
或者您可以创建一个标量函数,该函数将 date_dim_id 作为参数并返回您想要的结果,然后多次调用它..(如果您的数据库系统支持标量函数)
wrap them in parenthesis, add commas and select them :)
Or you could make a scalar function that takes as parameter the date_dim_id and returns the result you want, and call it multiple times.. ( if your DB system supports scalar functions )
您可以使用一系列联合在一起的查询。有点丑,但应该可以用
等等......
You could use a series of queries unioned together. Kind of ugly, but it should work
ETC...
好吧,考虑使用数据透视表。它更像是 EyeCandy :)
首先合并你的结果,而不是旋转它!
这是您的示例,这里是 SQLFiddle -> http://sqlfiddle.com/#!6/d41d8/6440
Well, consider using pivot table. It is more EyeCandy :)
Firstly union your results, than pivot it!
Heres your example, and here is the SQLFiddle -> http://sqlfiddle.com/#!6/d41d8/6440