DolphinDB:sqlCol 和 sqlColAlias 的区别

问题描述 投票:0回答:1

这是我的脚本,其中分别使用

sqlCol
sqlColAlias

code=`000905
sql((sqlCol(`date),sqlCol(code,ratios, `ret)),table ).eval()
sql((sqlCol(`date),sqlColAlias(<ratios(code)>,`ret)),table).eval()

sqlCol(code,ratios,`ret)

sqlColAlias(<ratios(code)>,`ret)

预计会达到相同的结果。但后一个会引发以下错误:

Server response: '::evaluate(sql((sqlCol("date"), sqlColAlias(< ratios(code) >, "ret")), table)) => Usage: ratios(X). X can't be string or symbol type.'

为什么会发生这种情况?这两个功能有什么区别?

error-handling metaprogramming dolphindb
1个回答
1
投票
sql((sqlCol(`date),sqlCol(code,ratios, `ret)),table ).eval()

在 sqlCol(code,ratios,`ret) 中,code 是表示表中列 00905 的列变量。因此,该表达式计算列 00905 的比率。

sql((sqlCol(`date),sqlColAlias(<ratios(code)>,`ret)),table).eval()

在 sqlColAlias(,`ret) 中, 是元代码表达式。 code 不是用于查询列00905的变量,而是被解析为完全包含字符串“code”的新列,该列不能用作ratios()的参数。

© www.soinside.com 2019 - 2024. All rights reserved.