Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.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
MS Access SQL Transform聚合Pivot值的管理_Sql_Ms Access_Pivot - Fatal编程技术网

MS Access SQL Transform聚合Pivot值的管理

MS Access SQL Transform聚合Pivot值的管理,sql,ms-access,pivot,Sql,Ms Access,Pivot,我一直在阅读和深入研究SQL,我想我现在已经成功地对此感到困惑。我的一个示例表是: Date Quantity Type Date_Entered 01/02/15 23 Orange 10/01/15 01/02/15 10 Red 10/01/15 01/02/15 18 Yellow 10/01/15 02/02/15 15

我一直在阅读和深入研究SQL,我想我现在已经成功地对此感到困惑。我的一个示例表是:

Date       Quantity       Type       Date_Entered
01/02/15   23             Orange     10/01/15
01/02/15   10             Red        10/01/15
01/02/15   18             Yellow     10/01/15
02/02/15   15             Yellow     10/01/15
02/02/15   19             Red        10/01/15
.          .              .          .
.          .              .          .
Date是预计销售的日历日期,Quantity是销售数量,Type是产品类型(这可能随类型的数量而变化),Date_Entered是数据放入表中并给出其他列预测的日期。对于输入的每个日期,都有一个日期范围(比如2015年全年)。对于每个日期,都有各种可用的类型

现在,我一直在尝试使用MS Access中的SQL查询来透视表(因为我在Excel中使用的是宏),以获得如下所示的表:

Date        Orange    Red    Yellow
01/02/15    3         2      5
02/02/15    0         -2     -1
03/02/15    8         -1     2
.           .         .      .
.           .         .      .
TRANSFORM IIF(FIRST([Date_Entered]) > LAST([Date_Entered]), 
              FIRST([Quantity]) - LAST([Quantity]),
              LAST([Quantity]) - FIRST([Quantity]))
SELECT [Date] FROM Sales WHERE [Date_Entered] = #2015-01-10# OR #2015-01-20# 
GROUP BY [Date] ORDER BY [Date] PIVOT [Type]"
其中,值是特定日期的销售量从一个输入日期到另一个输入日期之间的差值(例如,一周、一个月、一个季度的预计销售额变化)

到目前为止,我已经发展出以下几点:

Date        Orange    Red    Yellow
01/02/15    3         2      5
02/02/15    0         -2     -1
03/02/15    8         -1     2
.           .         .      .
.           .         .      .
TRANSFORM IIF(FIRST([Date_Entered]) > LAST([Date_Entered]), 
              FIRST([Quantity]) - LAST([Quantity]),
              LAST([Quantity]) - FIRST([Quantity]))
SELECT [Date] FROM Sales WHERE [Date_Entered] = #2015-01-10# OR #2015-01-20# 
GROUP BY [Date] ORDER BY [Date] PIVOT [Type]"
但是,FIRST()似乎只带出了零,因此上面没有给出正确的数字。我认为,我的问题是计算出计算表的值所需的聚合。希望有人能给我指出正确的方向


谢谢您的回复。

我想问题在于您的WHERE条款。而不是

WHERE [Date_Entered] = #2015-01-10# OR #2015-01-20# 
试一试


刚刚测试过这个,哇!非常感谢。我已经为此奋斗了一段时间。为什么日期不接受“或”?作为一个附带问题,字段名是否可以包含在返回查询中?很高兴我能提供帮助。这并不是说日期不接受,或者,正如所写的那样,Access将其解释为布尔值,例如#2015-01-20#False。如果在表达式([Date_Entered]=#2015-01-20#)中包含[Date_Entered],那么您将得到与使用in子句相同的结果。啊,好的-现在更有意义了。