操作数数据类型图像对于SQL Server 2014中的max运算符无效

时间:2016-10-28 09:53:17

标签: sql-server sql-server-2008 tsql sql-server-2014

我的查询在dev 2008中有效,但在2014测试中无效。 由于显示要求,我需要以确切格式返回的查询,但我不知道如何转换它。我尝试过转换和转换。

我在2014年运行查询时收到的错误消息是

  

Msg 8117,Level 16,State 1,Line 3   操作数数据类型图像对于max operator无效。

以下是查询:

SELECT Max(CASE
             WHEN rn % 3 = 0 THEN itemtransactionbatchid
           END) AS ItemTransactionBatchId,
       Max(CASE
             WHEN rn % 3 = 0 THEN referencebytes
           END) AS ReferenceBytes,
       Max(CASE
             WHEN rn % 3 = 0 THEN description
           END) AS Description,
       Max(CASE
             WHEN rn % 3 = 1 THEN itemtransactionbatchid
           END) AS ItemTransactionBatchId1,
       Max(CASE
             WHEN rn % 3 = 1 THEN referencebytes
           END) AS ReferenceBytes1,
       Max(CASE
             WHEN rn % 3 = 1 THEN description
           END) AS Description1,
       Max(CASE
             WHEN rn % 3 = 2 THEN itemtransactionbatchid
           END) AS ItemTransactionBatchId2,
       Max(CASE
             WHEN rn % 3 = 2 THEN referencebytes
           END) AS ReferenceBytes2,
       Max(CASE
             WHEN rn % 3 = 2 THEN description
           END) AS Description2
FROM  (SELECT a.itemtransactionbatchid,
              a.referencebytes,
              b.description,
              ( ROW_NUMBER()
                  OVER(
                    ORDER BY CASE WHEN b.code='SIGOPRT' THEN 1 WHEN b.code='SIGDRVR' THEN 2 WHEN b.code='SIGTRANS' THEN 3 WHEN b.code='SIGRECV' THEN 4 WHEN b.code='SIGN' THEN 5 WHEN b.code='SIGSUPR' THEN 6 ELSE 0 END, b.code, (SELECT NULL)) - 1 ) rn
       FROM   [Transaction].itemtransactionref a (NOLOCK)
              JOIN [Transaction].transactionreftype b
                ON a.transactionreftypeid = b.transactionreftypeid
       WHERE  b.code IN( 'SIGDRVR', 'SIGN', 'SIGOPRT', 'SIGRECV',
                         'SIGSUPR', 'SIGTRANS' )
              AND a.itemtransactionbatchid = xxxxxxx
              AND referencebytes IS NOT NULL)x
GROUP  BY rn / 3  

1 个答案:

答案 0 :(得分:0)

将图像列的数据类型更改为VARBINARY(MAX);

支持该类型的MAX

这不会产生任何错误:

CREATE TABLE #t(entr VARBINARY(MAX));

SELECT MAX(entr) FROM #t;