2015-07-19 85 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