我希望得到4个结果,这些结果通常在4行中返回,然后在2行中返回。
我有一个疑问:
SELECT meta_key, meta_value, t.post_date_gmt FROM (SELECT *
FROM dr_posts
JOIN dr_postmeta ON post_id = ID
WHERE post_author = 2
AND post_type ='donation') AS t WHERE meta_key = '_donation_amount' OR meta_key= '_anonymous_donation'返回:
=======================================================
| meta-key | meta-value | post_date_gmt |
=======================================================
| _anonymous_donation | 0 | 2015-03-01 |
| _donation_amount | 10 | 2015-03-01 |
| _anonymous_donation | 0 | 2015-03-02 |
| _donation_amount | 15 | 2015-03-02 |
_______________________________________________________我真正想要的(列名并不重要--只是结果):
=============================================================
| _anonymous_donation | _donation_amount | post_date_gmt |
=============================================================
| 0 | 10 | 2015-03-01 |
| 0 | 15 | 2015-03-02 |
_____________________________________________________________怎么做?我读到我需要使用PIVOT,但我不确定这是否是我真正需要的。
发布于 2015-03-02 12:41:30
我认为这个查询应该做您想做的事情:
select
max(case when meta_key = '_anonymous_donation' then meta_value end) as '_anonymous_donation',
max(case when meta_key = '_donation_amount' then meta_value end) as '_donation_amount',
post_date_gmt
from (SELECT *
FROM dr_posts
JOIN dr_postmeta ON post_id = ID
WHERE post_author = 2
AND post_type ='donation'
) AS t
WHERE meta_key = '_donation_amount' OR meta_key= '_anonymous_donation'
group by post_date_gmt发布于 2015-03-02 12:32:37
我想这可能会有帮助
select min(meta-value) as _anonymous_donation,
max(meta-value) as _donation_amount,
post_date_gmt
from table
group by post_date_gmthttps://stackoverflow.com/questions/28809625
复制相似问题