zfe*_*mer 4 t-sql sql-server sql-server-2008
这是我到目前为止:
SELECT
account, ' ', message_type,
MAX(message_no) as max_message_no, message_text
FROM
(SELECT
account, message_type, message_no, message_text
FROM
messages m
INNER JOIN
receivables r ON m.account = r.aracct
WHERE
m.account IN (SELECT r.aracct AS account
FROM receivables r
WHERE r.balance <> 0)
AND m.message_type = 'N') t1
GROUP BY
t1.account, t1.message_type, t1.message_text
Run Code Online (Sandbox Code Playgroud)
我不断收到错误消息:
除非使用 IS NULL 或 LIKE 运算符,否则无法比较或排序 text、ntext 和 image 数据类型。
我基本上想要message_no每个帐户的最大值,我希望它显示message_text,但它不允许它,因为它是一种text数据类型。
TEXT,NTEXT和IMAGE已弃用,应替换为相应的类型VARCHAR(MAX),NVARCHAR(MAX)和VARBINARY(MAX)。你可能会用你的TEXT-column
CAST(t1.message_text AS VARCHAR(MAX))
Run Code Online (Sandbox Code Playgroud)
在您的子选择中执行一次可能就足够了:
SELECT account, ' ', message_type, MAX(message_no) as max_message_no, message_text
FROM
(
SELECT account, message_type, message_no, CAST(message_text AS VARCHAR(MAX)) AS message_text
FROM messages m INNER JOIN receivables r ON m.account = r.aracct
WHERE m.account IN (SELECT r.aracct AS account FROM receivables r WHERE r.balance <> 0)
AND m.message_type = 'N'
) t1
GROUP BY t1.account, t1.message_type, t1.message_text
Run Code Online (Sandbox Code Playgroud)