1

我想从现有表中创建一个新表。

这是现有表

A       B               C     
title   view_count  date   

aaa      24      5/18/13    
bbb      10      5/18/13    
ccc      10      5/18/13    
aaa      10      5/19/13    
aaa      20      5/20/13    
bbb      10      5/20/13    
ccc      20      5/20/13    
ccc      20      5/21/13    
aaa       5      5/22/13    
bbb       3      5/22/13    
ccc       1      5/22/13    

我尝试按如下方式制作新表:

title  date1(5/18/13)    date2(5/19/13)    date3(5/20/13)

aaa      24 (view_count)      10                20

我怎样才能在 MySQL 中做到这一点?

======================== 我添加我的问题。我已经尝试了这些您提供帮助的查询,然后我得到了我想要的结果。我可以把它们做成一张新桌子吗?我想制作一个新表作为这些结果。

4

3 回答 3

0

编辑...OP在我回答时改变了他的问题,

SUMIFS()可以帮忙!

当我整天查找和返回数据时,我经常使用它。它允许您从一个范围内的一个或多个特定条件为真的范围内返回一个值。非常适合像您这样结构化的数据。

如果您在第 1 行的标题与第 2 行中的数据一样,并且您的Today日期在 F1 中,那么您可以在 D2 列中键入并向下拖动的公式将是...

=(SUMIFS(B:B,A:A,A2,C:C,$F$1-1)-SUMIFS(B:B,A:A,A2,C:C,$F$1-2))/(SUMIFS(B:B,A:A,A2,C:C,$F$1-1))

您可以使用 excel 函数更改单元格 F1 的值,Today()或者只需将 Today 放入您的公式中。

我希望这有帮助。

-舍比尔

在此处输入图像描述

于 2013-05-23T13:50:48.550 回答
0

尝试这个Query

select 
    distinct
    t.title,
    t1.view_count as `date1(5/18/13)`,
    t2.view_count as `date2(5/19/13)`,
    t3.view_count as `date2(5/20/13)`
from table_name t
left join table_name t1 on t.title=t1.title and t1.date='2013/5/18'
left join table_name t2 on t.title=t2.title and t2.date='2013/5/19'
left join table_name t3 on t.title=t3.title and t3.date='2013/5/20'
where t.title='aaa'

SQL小提琴

于 2013-05-23T14:18:27.477 回答
0

你可以这样做:

select title,
       sum(case `date` when '2013/05/18' then view_count else 0 end) `date1(5/18/13)`,
       sum(case `date` when '2013/05/19' then view_count else 0 end) `date2(5/19/13)`,
       sum(case `date` when '2013/05/20' then view_count else 0 end) `date3(5/20/13)`
from myTable
group by title

- 返回所有标题的值;如果您只想查看标题 aaa 的结果,请替换group by titlewhere title='aaa'.

于 2013-05-23T14:01:15.933 回答