Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 需要在access数据库上透视数据_Sql_Ms Access - Fatal编程技术网

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名称,你不能这样做?这看起来不错,但我认为我没有准确地表示我的数据结构。我明天再问这个问题。