在进行我的研究时,我无法找到类似的问题(在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 :(得分:0)
您可以使用简单的GROUP BY来折叠数据。我排除了Row列,因为我认为它只是一个行号占位符。
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
注意:上述示例查询尚未执行。