2016-10-11 100 views
0

我有兩個表我正在合併,這工作,但我認爲我設計了第二個表錯了,因爲我有一個真正是多項選擇問題的每個項目的列。查詢是這樣的:將列標題轉換爲行元素

select Count(n.ID) as MemCount, u.Pay1Click, u.PayMailCC, u.PayMailCheck, u.PayPhoneACH, u.PayPhoneCC, u.PayWuFoo 
from name as n inner join 
UD_Demo_ORG as u on n.ID = u.ID 
where n.MEMBER_TYPE like 'ORG_%' and n.CATEGORY not like '%_2' and 
(u.Pay1Click = '1' or u.PayMailCC = '1' or u.PayMailCheck = '1' or u.PayPhoneACH = '1' or u.PayPhoneCC = '1' or u.PayWuFoo = '1') 
group by u.Pay1Click, u.PayMailCC, u.PayMailCheck, u.PayPhoneACH, u.PayPhoneCC, u.PayWuFoo 

結果想出這樣的:

Count Pay1Click PayMailCC PayMailCheck PayPhoneACH PayPhoneCC PayWuFoo 
8  0   0   0    0    0   1 
25  0   0   0    0    1   0 
8  0   0   0    1    0   0 
99  0   0   1    0    0   0 
11  0   1   0    0    0   0 

所以現在的問題是,我怎麼能得到這個2列,計數,然後在接下來的6頭頭所以結果如下所示:

Count PaymentType 
8  PayWuFoo   
25  PayPhoneCC   
8  PayPhoneACH   
99  PayMailCheck   
11  PayMailCC   

謝謝。

+1

您正在使用哪個'DBMS'。厭倦了寫這篇聲明:/ –

+0

對不起,我的錯。 SQL Server 2012 – Jayson

回答

0

「事實表和維表之間的差異」 試試這個

Select Count, 

CASE WHEN Pay1Click=1 THEN 'Pay1Click' 
      PayMailCC=1 THEN ' PayMailCC' 
      PayMailCheck=1 THEN 'PayMailCheck' 
      PayPhoneACH=1 THEN 'PayPhoneACH' 
      PayPhoneCC=1 THEN 'PayPhoneCC' 
      PayWuFoo=1 THEN 'PayWuFoo' 
    END as PaymentType 

FROM ...... 
+0

這工作。完全忘記做一個案例陳述。謝謝。 – Jayson

0

我認爲你確實在第二個表的結構中犯了錯誤。與其爲每個選擇題創建一行,我建議將所有這些列轉換爲「答案」列,以便將該備選的實際名稱作爲該列中的記錄。

但是爲此,您必須更改表格的結構,並更改表格的填充方式。你應該得到選中的替代品的名稱並將其放入你的表格中。

更多相關信息,您可以關注表中的重複數據,因此一遍又一遍地寫同一個字符串可能會使您的表變大。 如果有其他的事情暗示了答案,在UD_Demo_ORG表中的其他信息,那麼你就可以恢復正常的表,創建一個payment_dimension表或類似這樣的東西,給你的選擇之間的ID如

ID PaymentType OtherInfo(description, etc)... 
1  PayWuFoo   ... 
2  PayPhoneCC  ... 
3  PayPhoneACH  ... 
4  PayMailCheck  ... 
5  PayMailCC  ... 

這是稱爲維度表,然後在您的記錄中,您將擁有付款類型的ID,而不是您不需要的信息。 因此,而不是一個大的結果集,也許你可以通過很多查詢簡化和剛剛

Count PaymentId 
8  1   
25  2   
8  3   
99  4   
11  5 

的結果集。它也會使查詢更快,如果您需要其他信息,則可以加入表格並獲取它。

但是,如果唯一的字段是名稱,那麼在這種情況下,您可以使用paymentType作爲「id」...只是考慮它。如果您將其分隔到維度表,則它是可縮放的。

進一步閱讀一些參考文獻:

  1. http://beginnersbook.com/2015/05/normalization-in-dbms/ 「正常化DBMS」

  2. http://searchdatamanagement.techtarget.com/answer/What-are-the-differences-between-fact-tables-and-dimension-tables-in-star-schemas