0

并提前感谢您的帮助。我正在使用 Microsoft Query 来询问 Sage 50 表。我正在尝试创建一个用户定义的字段,该字段仅包含客户帐户参考的第一个数字。在查询 SAP 表时,通过使用 Left 或 Mid 函数,我已经能够实现此结果。当我尝试使用 Sage 完全相同的方法时,我收到错误“未找到列”

SQL如下:

SELECT INVOICE.ACCOUNT_REF, LEFT(INVOICE.ACCOUNT_REF,1)
FROM INVOICE INVOICE
WHERE (INVOICE.ACCOUNT_REF Like "CHA002")

我希望这个结果是“C”,但我得到了

未找到列

请帮忙!我还需要做类似的事情来将年份与日期字段隔离开来——目前我在这里也遇到同样的错误:-(

4

3 回答 3

1

请注意,like 运算符需要 % 字符:

SELECT ACCOUNT_REF, LEFT(ACCOUNT_REF,1)
FROM INVOICE
WHERE ACCOUNT_REF Like "CHA002%"
于 2019-08-22T10:11:31.347 回答
0

你可以试试这个。尝试为您的结果列提供一些列名别名。也需要
改成。"'

SELECT INVOICE.ACCOUNT_REF, LEFT(INVOICE.ACCOUNT_REF,1) as "COLNAME"
FROM INVOICE INVOICE
WHERE (INVOICE.ACCOUNT_REF Like "CHA002")

正如您对 SAGE 的评论

在 SAGE 中,您需要使用mid函数mid$(EXP_STRING,EXP_POS,EXP_NB)或者可能Instr使用相同的语法。
有关 SAGE 的更多信息,您可以找到此链接

SELECT INVOICE.ACCOUNT_REF,  mid$(INVOICE.ACCOUNT_REF,1,1)
FROM INVOICE INVOICE
WHERE (INVOICE.ACCOUNT_REF Like "CHA002")

于 2019-08-22T09:23:30.313 回答
0

我担心您的表别名INVOICE INVOICE

您能否将表别名更改为与实际表名不同的名称,例如IV.

所以下面的查询可能会起作用:

SELECT IV.ACCOUNT_REF, LEFT(IV.ACCOUNT_REF, 1) AS FirstCharacter
FROM INVOICE IV
WHERE IV.ACCOUNT_REF LIKE 'CHA002'
于 2019-08-22T09:29:26.750 回答