1

我正在尝试运行以下查询:

SELECT  
  A.STEPNAME, 
  A.BRDATE BRDATE_A, 
  B.BRDATE BRDATE_B, 
  MIN(A.STARTTIME) STARTTIME_A, 
  MAX(A.ENDTIME) ENDTIME_A, 
  MIN(B.STARTTIME) STARTTIME_B, 
  MAX(B.ENDTIME) ENDTIME_B, 
  'RUNTIME_A' = convert(VARCHAR,DATEDIFF(MINUTE,A.STARTTIME,A.ENDTIME),108) ,
  'RUNTIME_B' = convert(VARCHAR,DATEDIFF(MINUTE,B.STARTTIME,B.ENDTIME),108) 
FROM 
  CB_OPX_AUDIT_HIST A, 
  CB_OPX_AUDIT_HIST B
WHERE  
  A.BRDATE = ('05/11/2012') 
AND 
  B.BRDATE = ('05/16/2012') 
AND 
  A.BR = '03'
AND 
  A.STEPNAME=B.STEPNAME
AND 
  A.BR=B.BR
GROUP BY 
  A.STEPNAME, 
  A.ENDTIME, 
  A.STARTTIME,
  A.BRDATE,
  B.BRDATE,
  B.ENDTIME, 
  B.STARTTIME
ORDER BY  
  A.STARTTIME

我需要'RUNTIME_A'和'RUNTIME_B'之间的区别..

有人可以告诉我如何在上述查询中得到区别。?

4

3 回答 3

0

将您的整个查询包装在另一个SELECT语句中。在外部 select 语句中,您可以简单地 select RUNTIME_A - RUNTIME_B

于 2012-05-17T22:20:58.937 回答
0

你到底是什么意思“得到差异”?

你已经在几分钟内得到了差异,它总是少于一天吗?

这对你有什么作用?

DATEADD(
  minute,
  DATEDIFF(minute, A.STARTTIME, A.ENDTIME)
  -
  DATEDIFF(minute, B.STARTTIME, B.ENDTIME),
  0
)

或者...

CONVERT(
  VARCHAR(8),
  DATEADD(
    minute,
    DATEDIFF(minute, A.STARTTIME, A.ENDTIME)
    -
    DATEDIFF(minute, B.STARTTIME, B.ENDTIME),
    0
  ),
  108
)
于 2012-05-17T22:22:08.000 回答
0

为简单起见,我建议从使用 VARCHAR 更改为使用 DATETIME 并再次运行简单的 datediff

DATEDIFF(MINUTE, 
    convert(DATETIME,DATEDIFF(MINUTE,A.STARTTIME,A.ENDTIME),108), 
    convert(DATETIME,DATEDIFF(MINUTE,B.STARTTIME,B.ENDTIME),108)
)

您可以将原始查询包装为子查询以简化操作。

于 2012-05-17T22:23:26.620 回答