【发布时间】:2016-12-18 00:27:50
【问题描述】:
如标题中所述,我需要在 Access 中运行一些 SQL,这为我提供了一个基于三个条件的 0/1 变量。首先,新变量必须比较 A 列中所有相同的值。其次,它必须检查 B 列中的值是否最大(在我的情况下,它一定不是),第三,必须检查 C 列的值是否最大(在我的情况下,它必须)。
通常我会在一行的列上运行一个简单的 IIf 语句,但在这里,我需要它来比较 A 列中所有相同的值,并查看是否存在“非最大”值在 comlum B 中,在 C 列中具有相应的“最大值”。
我们在很多讨论中读到,您需要为此创建一个新查询,但是否可以在查询中执行此操作并在 D 列中获取一个新变量,给出 0/1多变的?
为了清楚起见,我的数据如下所示:
A B C
10 4 12-04-2014
10 5 02-17-2015
10 7 08-11-2016
10 8 08-31-2016
10 6 09-05-2016
会有成百上千行,其中 A 与 10 不同。
因此,在这种情况下,只有最后一行会在 D 列中获得值 1,因为它具有最新日期,但对于 A 列中的 ID 值而言,它不是 B 列中的最大值。
非常感谢任何帮助!
- 马克
【问题讨论】:
-
简单来说,您希望能够选择 C 列中的最大值并将值 1 分配给 D 列中的相应行。对吗?
-
不完全是。这只是第一个标准。 D中的值1只能得到,如果C中的值最高,则B中的值不是最高的。并且它需要考虑到,它只能比较 B 和 C 中的值,其中 A 中的值跨行相同。
-
问题是,我需要测量返回给定阶段,这就是为什么 B 列很重要,并且该值不能是该列中的最高值。
-
那么A列跨行相同?你的意思是,一直都一样?
-
但是,考虑到可能的 3 步方法,可以使用您的观点。如果您可以在 C 列中为 A 列中的 ID 值指定最高值的情况下在 D 列中分配值 1,然后对 B 列执行相同的操作 - 即,如果 B 列中的值在 E 列中给出值 1是最高的,给定 A 列中的 ID 值。那么您将能够在 F 列中有第三个 0/1 变量,如果 E 列是 0 并且 D 列是 1,hvis 给出值 1。可以这样做吗?