以下是引用sylknb在2016-6-24 08:14:00的发言:
这个图不错,我问的是为什么只取一个数值,而不取一列数值?
1、SELECT-SQL执行时,有一个SCAN...ENDSCAN的功能。即,自动从第一条记录开始查询,直到最后一条记录;这个图不错,我问的是为什么只取一个数值,而不取一列数值?
2、EVALUATE()的作用是计算出括号内表达式的值。比如:EVALUATE('1+2'),返回值为3。
看懂了这两点,再看这道题就不难了。现在要求查询结果表中,第一条记录是第一个字段的值,第二条记录是第二个字段的值,... ...,以此类推。那么就可以利用前面提到的那两个特点来解出。
这条命令的执行过程:
当处理第一条记录时,Xm字段的值为'P01',于是,经EVALUATE()函数计算后,完整的命令就是:SELECT P01 as JG FROM Book11,这条命令应该能看懂了吧?此时,查询结果的第一条记录就是P01字段的第一条记录值'A01';
接下来处理第二条记录。如果命令本身就是SELECT P01 as JG FROM Book11,那么查询结果中的第二条记录值就是'A02',这个假设应该能理解吧?但这里的输出列是一个表达式,而不是一个字段名。所以在查询第二条记录前,还是要再计算一遍EVALUATE(xm)。此时,Xm中的值已经是'P02'了。那么完整的命令就变成了:SELECT P02 as JG FROM Book11,于是第二条记录的查询结果就是P02字段的第二条记录值,也即'B03'。
以此类推,第三条记录查询时,命令就变成了SELECT P03 as JG FROM Book11,于是输出P03字段的第三条记录值。... ...
希望以上分析你能看懂。