Sql MS Access中的列到行
我正在尝试在MS Access中创建一个查询,以最终获取以下内容的输出:Sql MS Access中的列到行,sql,ms-access,rows,Sql,Ms Access,Rows,我正在尝试在MS Access中创建一个查询,以最终获取以下内容的输出: Name Cat 1 Cat 2 Cat 3 Cat 4 Cat 5 Cat 6 Joe 2 12 10 1 0 0 Bob 0 0 0 0 0 0 Jody 2 4 3 1 2
Name Cat 1 Cat 2 Cat 3 Cat 4 Cat 5 Cat 6
Joe 2 12 10 1 0 0
Bob 0 0 0 0 0 0
Jody 2 4 3 1 2 0
Harry 0 4 14 0 2 0
对这样的事情:
Name Joe Bob Jody Harry
Cat 1 2 0 2 0
Cat 2 12 0 4 4
Cat 3 10 0 3 14
这可能吗
编辑
这是表格当前的方式:
Name X1 X2A X2B X2C X3A X3B X3C X4 X5
Joe 1 5 0 1 1 5 6 0 0
Bob 2 7 0 2 1 4 2 1 9
Billy 0 8 0 3 1 3 1 0 9
这就是我想要得到的:
Name Joe Bob Billy
X1 1 2 0
X2 (sum of X2A/X2B/X2C) 6 9 11
X3 (sum of X3A/X3B/X3C) 12 7 5
X4 0 1 0
X5 0 9 9
首先创建联合查询以规范化表,然后创建交叉表以显示数据:
SELECT [Name], "Cat 1" As Cat, [Cat 1] As CatVal FROM Table
UNION ALL
SELECT [Name], "Cat 2" As Cat, [Cat 2] As CatVal FROM Table
<...>
假设联合查询是QueryX:
TRANSFORM First(QueryX.CatVal) AS FirstOfCatVal
SELECT QueryX.Cat
FROM QueryX
GROUP BY QueryX.Cat
PIVOT QueryX.Name;
我有同样的问题,但唯一的问题是,我当前所做的查询显示的输出几乎与上面所示的原始表完全相同……我如何在您显示的union sql中使用我的查询?我不明白您的意思。我已经给出了一个使用示例中显示的字段名的示例。如果你遵循了我上面的例子,你就不能以你的例子结束。请发布您正在使用的SQL。这是我正在使用的SQL…我想对其应用您的联合查询:选择[Authorizer Name],将[Q1A-CD1]和[Q2A-CD2A]合并为[Category 1],将[Q2A-CD2A]合并为[Q8A-CD2A]+[Q10A-CD2A]+[CTS A accurate-CD2A]+[e-accurate-CD2A]和[Q7A-CD2B]+[Q9A-CD2B]+[Q11A-CD 2B]+[CTS A程序-CD 2B]+[e-A程序-CD 2B]作为[第3类],Sum[Q4A-CD 3]作为[第4类],Sum[Q5A-CD 4]作为[第5类],Sum[Q12A-CD 5]作为[第6类]来自[审查结果],其中[审查结果]。[授权人姓名]=1组由[审查结果]。[授权人姓名];当您不确定自己在做什么时,虚构的数据是一个坏主意。您的示例与您的数据完全不同,需要完全不同的答案。表中的真实数据是什么,而不是查询,您希望得到什么?只需选择一组数据就足够了。那么,您能告诉我为什么示例数据中的字段名是a吗您与查询中的字段名完全不同?您好,很抱歉,我在复制和粘贴到正确的表格式时遇到问题。我发送给您的查询引用了我数据库中的实际字段/列。但是,真实数据集包含敏感信息。因此,我起草了模拟表,如您所见。表和查询不相关我们互相交流。希望这有帮助吗?让我猜猜,你已经发送了一个问卷类型的表格,上面有问题?你需要在表格级别开始规范化。给我几分钟。你完全正确!最初设计数据库的人没有规范化。再次感谢你自己,创建一个规范化的表格在下面的联合查询中使用make table并对其进行进一步分析。
SELECT [Name], "X1" As Cat, [X1] As CatVal FROM Table
UNION ALL
SELECT [Name], "X2" As Cat, Nz([X2A],0)+Nz([X2B],0)+Nz([X2C],0) As CatVal
FROM Table
UNION ALL
SELECT [Name], "X3" As Cat, Nz([X3A],0)+Nz([X3B],0)+Nz([X3C],0) As CatVal
FROM Table
UNION ALL
SELECT [Name], "X4" As Cat, [X4] As CatVal FROM Table
UNION ALL
SELECT [Name], "X5" As Cat, [X5] As CatVal FROM Table
TRANSFORM First(QueryX.CatVal) AS FirstOfCatVal
SELECT QueryX.Cat
FROM QueryX
GROUP BY QueryX.Cat
PIVOT QueryX.Name;