我的sql表达式有问题吗?

我的sql表达式有问题吗?,sql,sql-server,crystal-reports,Sql,Sql Server,Crystal Reports,我使用Crystal Report v8.5来显示仍有余额的客户列表 下面是我编写的SQL表达式 SELECT "c"."firstname","c"."lastname" "transaction"."record", "transaction"."balsheet" FROM "dbproj"."dbo"."c" "c" "dbproj"."dbo"."transaction" "transaction" INNER JOIN "dbproj"."db

我使用Crystal Report v8.5来显示仍有余额的客户列表

下面是我编写的SQL表达式

SELECT
    "c"."firstname","c"."lastname"
    "transaction"."record", "transaction"."balsheet"
FROM
    "dbproj"."dbo"."c" "c"
    "dbproj"."dbo"."transaction" "transaction"
INNER JOIN
    "dbproj"."dbo"."c" "c" ON "c"."clientid"="transaction"."clientid"
WHERE
    ("transaction"."tstatus"='UNPAID')
ORDER BY
    "c"."lastname"
我是Crystal Reports的新手,所以我对如何将SQL语句转换为SQL表达式进行了深入的研究,这就是我得到的。但是,当我将其放在SQL表达式上时,messagebox指示所使用的表达式存在错误


我还有什么需要改进的吗?或者我把这个查询放在SQL表达式字段上是个糟糕的主意?我在youtube频道上看到了一个演示,因此我(出于某种原因)确信我所做的是正确的,但如果是这样,为什么我会收到此错误消息?

您的
FROM
子句应该是:

FROM

"dbproj"."dbo"."transaction" "transaction"
完整查询:

SELECT

"c"."firstname","c"."lastname",

"transaction"."record", "transaction"."balsheet"

FROM

"dbproj"."dbo"."transaction" "transaction"

INNER JOIN

"dbproj"."dbo"."c" "c" ON

"c"."clientid"="transaction"."clientid"

WHERE

("transaction"."tstatus"='UNPAID')

ORDER BY

"c"."lastname"

您的
FROM
子句应该是:

FROM

"dbproj"."dbo"."transaction" "transaction"
完整查询:

SELECT

"c"."firstname","c"."lastname",

"transaction"."record", "transaction"."balsheet"

FROM

"dbproj"."dbo"."transaction" "transaction"

INNER JOIN

"dbproj"."dbo"."c" "c" ON

"c"."clientid"="transaction"."clientid"

WHERE

("transaction"."tstatus"='UNPAID')

ORDER BY

"c"."lastname"

我很想看看youtube视频,它给了你这种语法,因为它是错误的-要么你转录不正确,要么出版商应该拿走他们的SQL许可证

SELECT c.firstname, c.lastname, t.record, t.balsheet
------ missing comma here ----^

FROM 

----- extra reference to the table "c" removed here

dbproj.dbo.[transaction] AS t -- used an alias here too, just like c below
INNER JOIN dbproj.dbo.c AS c
ON c.clientid = t.clientid
WHERE t.tstatus = 'UNPAID'
ORDER BY c.lastname;

我很想看看youtube视频,它给了你这种语法,因为它是错误的-要么你转录不正确,要么出版商应该拿走他们的SQL许可证

SELECT c.firstname, c.lastname, t.record, t.balsheet
------ missing comma here ----^

FROM 

----- extra reference to the table "c" removed here

dbproj.dbo.[transaction] AS t -- used an alias here too, just like c below
INNER JOIN dbproj.dbo.c AS c
ON c.clientid = t.clientid
WHERE t.tstatus = 'UNPAID'
ORDER BY c.lastname;

请添加错误消息删除这一行:
>“dbproj”“dbo”“c”“c”
(保留这一行:
>“dbproj”“dbo”“c”“ON
)为什么要在每个名字周围加双引号?这使得您的查询极难解析。除了
“c”,“firstname”
为什么不干脆
c.firstname
?@Aaron,Crystal实际上会在每个名字周围显示单引号。所以它应该看起来更像“c”。“firstname”。但它通常不加任何引号就能工作。@campagnolo_1 Crystal到底为什么要这样做?单引号看起来像字符串文字,而不是标识符,这种语法的某些形式已经被弃用(和其他地方)。我希望这不是它在最新和未来版本(如果仍在生产)中的工作方式。请添加错误消息删除这一行:
“dbproj”“dbo”“c”“c”
(保留这一行:
>“dbproj”“dbo”“c”“c”
)为什么要在每个名字周围加双引号?这使得您的查询极难解析。除了
“c”,“firstname”
为什么不干脆
c.firstname
?@Aaron,Crystal实际上会在每个名字周围显示单引号。所以它应该看起来更像“c”。“firstname”。但它通常不加任何引号就能工作。@campagnolo_1 Crystal到底为什么要这样做?单引号看起来像字符串文字,而不是标识符,这种语法的某些形式已经被弃用(和其他地方)。我希望这不是它在最新和未来版本(如果仍在生产)中的工作方式。这仍然有语法错误(选择列表中lastname后面没有逗号)。@AaronBertrand当然,谢谢!更正。这仍然有语法错误(选择列表中lastname后面没有逗号)。@AaronBertrand当然,谢谢!更正。