2015-07-19 81 views
3

我有一个表有一个对象的几行。我试图对行进行分组,以便它们基于链接列构成一列。我有一些SQL会这样做,但现在我不知道如何使它基于另一个字段的条件。将行转换为列 - 一个表

****************************************************** 
* id * page_id * key * value  * uuid * 
****************************************************** 
* 1 * 1 * type *  url  * 654978654 * 
****************************************************** 
* 2 * 1 * picture * 654978654.png * 654978654 * 
****************************************************** 
* 3 * 1 * url * google.com * 654978654 * 
****************************************************** 
* 4 * 1 * active *  1  * 654978654 * 
****************************************************** 

所以这基本上只是表中的一个条目。我希望能够让我的选择只在每个uuid的活动设置为1时才能工作。下面是我用于将行写入列的SQL(它可以工作)。

Select uuid 
    , Min(Case When meta_key = "type" Then meta_value End) As Type 
    , Min(Case When meta_key = "picture" Then meta_value End) As Picture 
    , Min(Case When meta_key = "url" Then meta_value End) As URL 
    , Min(Case When meta_key = "active" Then meta_value End) As Active 
From sm_page_meta 
Where meta_key In("type","picture","url","active") 
Group By uuid 

回答

2

就包括having条款:

Select uuid 
    , Min(Case When meta_key = 'type' Then meta_value End) As Type 
    , Min(Case When meta_key = 'picture' Then meta_value End) As Picture 
    , Min(Case When meta_key = 'url' Then meta_value End) As URL 
    , Min(Case When meta_key = 'active' Then meta_value End) As Active 
From sm_page_meta 
Where meta_key In('type', 'picture', 'url', 'active') 
Group By uuid 
Having Active = '1'; 

如果您不希望包括在结果集中Active,只是把HAVING子句中的整体表现。

+0

那很简单。大声笑。无法在网上找到任何内容。谢谢您的帮助。 – softlyspoken