Sql 需要在access数据库上透视数据
假设我有这样一个表结构:Sql 需要在access数据库上透视数据,sql,ms-access,Sql,Ms Access,假设我有这样一个表结构: ID | Name | T_1 || T_2 || T_3 || T_4 | Total 123456 Jon pepper. onions 45.50
ID | Name | T_1 || T_2 || T_3 || T_4 | Total
123456 Jon pepper. onions 45.50
346432 Steve pineap. mushro. pepper. sausag. 60.31
867432 Mike bacon 100.67
桌上比萨饼销售
Customer_ID | Total_Spent
123456 45.50
346432 60.31
867432 100.67
桌上比萨饼
ID| Customer_ID | Topping | Percent
1 123456 pepper. 50%
2 123456 onions 50%
3 346432 pineap. 25%
4 346432 mushro. 25%
5 346432 pepper. 25%
6 346432 sausag. 25%
7 867432 bacon 100%
表名
Customer_ID | Name
123456 Jon
346432 Steve
867432 Mike
所有人都有客户ID。比如我想要一份报告,上面写着他们的名字、客户ID、他们吃的配料以及他们花了多少钱。所以结果会是这样的:
ID | Name | T_1 || T_2 || T_3 || T_4 | Total
123456 Jon pepper. onions 45.50
346432 Steve pineap. mushro. pepper. sausag. 60.31
867432 Mike bacon 100.67
我怎么能这么做?还要注意的是,如果有2个或更多的浇头,任何具有较小ID(即该客户ID组的第一个记录)的浇头都将始终是第一个,然后是第二个,等等。我实际上了解如何做所有事情,除了将浇头分组,这就是我一直坚持的。我正在寻找的似乎是一个数据透视表或其他东西,但我不知道如何将其应用于Access SQL。考虑MS Access的唯一查询,使用域函数DCount执行计数:
你需要浇头按那个顺序出现吗?你试过什么了吗?我需要浇头从头到尾按顺序排列。因此,如果1个客户ID有3个浇头,则谁的ID最小,谁的ID将首先显示,然后是下一个较大的,然后是下一个,等等。我可以让所有内容都显示,但浇头除外。我不知道如何让它们以类似于透视的方式显示在多个表中?子查询就是这样吗?我不知道如何获得您想要的排序。pivot查询可以为每个浇头提供四列,但不能提供AFAIK顺序。好吧,忘了我可以处理的顺序,在这个示例中,如何使用pivot?谢谢,我将在几分钟内尝试一下,然后再与您联系。我读到了关于交叉表的内容,并且读到了这个异常:不能将多个表或查询用作记录源。你能详细说明一下这个限制吗?这是否意味着如果我引入了另一个表,比如topping只是pizza表中的一个topping ID,并且必须连接一个topping表才能得到topping名称,你不能这样做?这看起来不错,但我认为我没有准确地表示我的数据结构。我明天再问这个问题。