2014-04-21 56 views
0

在進行我的研究時,我一直無法找到類似的問題(在Access 2010和TSQL的環境中)。如何在Access 2010中使用TSQL「摺疊」以下列數據?

挑戰:目前,我的數據看起來像下面的狀態#1。在狀態#1中,存在重複的行,唯一的區別是它們對於三個特定字段(OffersMembership,HasSeating,QuietArea)具有不同的字段/列值。

慾望:我想通過PlaceID和Year「摺疊」行,並且只生成每行中每個字段中存在Y的數目的不同計數。我已經生成了樣本數據來表示我想要的結果。

我的數據目前看起來如下:

State #1 

Row | Year | PlaceID | OffersMembership | HasSeating | QuietArea 

001 2011 Park   Y     Y   Y     
002 2011 Park   Y     N   N 
003 2011 Library   Y     Y   Y 
004 2011 Library   N     Y   N 
005 2011 Museum   Y     N    
006 2011 Museum   Y     Y   Y 
006 2011 MovieTheater  Y        N 
007 2012 Park   Y     Y   Y     
008 2012 Park           N 

我想我的數據是這樣的:

State #2    

Row | Year | PlaceID | OffersMembership "Y"| HasSeating "Y"| QuietArea "Y" 

001 2011  Park    1     1    1 
002 2011  Library   1     1    1 
003 2011  Museum   1     1    1 
004 2011 Movietheater  1     
004 2012  Park    1     1    1 

注:

1)我使用Access 2010中,因爲內TSQL我正在運行命中SQL Server表的傳遞查詢。

2)是的,狀態#1的數據中存在「空白」單元。

回答

0

您可以使用簡單的GROUP BY來摺疊數據。我排除了「行」列,因爲我認爲這只是行號佔位符。

SELECT [Year] 
     ,PlaceID 
     ,COUNT(CASE OffersMembership WHEN 'Y' THEN 1 ELSE 0 END) AS OffersMembership 
     ,COUNT(CASE HasSeating WHEN 'Y' THEN 1 ELSE 0 END) AS HasSeating 
     ,COUNT(CASE QuietArea WHEN 'Y' THEN 1 ELSE 0 END) AS QuietArea 
    FROM MyTable t 
GROUP BY t.[Year] 
     ,PlaceID 

注意:上述示例查詢尚未執行。