我有一个包含以下数据的表:
ID | ObjectID | ActionDate
=======================================
12345 | 422107 | 2016-10-05 11:24:23.790
12346 | 422107 | 2016-10-05 11:24:28.797
我想返回ID和最大日期,但MAX函数似乎没有计算到秒值(SS)。我错过了什么,或者这是MAX功能的限制吗?这是我正在使用的代码:
SELECT
TMOA.ObjectID AS [ObjID]
, TMOA.ID AS [ObjActionID]
, MAX(TMOA.ActionDate) AS [PrepDate]
FROM
TM_Procedure AS TMPRD
left join TM_ObjectAction AS TMOA ON TMPRD.ID = TMOA.ObjectID
GROUP BY
TMOA.ObjectID
, TMPRD.ID
, TMOA.ID
答案 0 :(得分:0)
一个选项是使用窗口函数Row_Number()
stephen at greed in ~/code
$ gcc -g -c set.c -O3
stephen at greed in ~/code
$ objdump -d -M intel -S set.o
set.o: file format elf64-x86-64
Disassembly of section .text.startup:
0000000000000000 <main>:
#include<stdio.h>
int main(int argc, char *argv)
{
unsigned long x = 0;
x |= (1UL << argc);
0: 89 f9 mov ecx,edi
2: be 01 00 00 00 mov esi,0x1
7: 48 83 ec 08 sub rsp,0x8
b: 48 d3 e6 shl rsi,cl
e: bf 00 00 00 00 mov edi,0x0
13: 31 c0 xor eax,eax
15: e8 00 00 00 00 call 1a <main+0x1a>
{
1a: 31 c0 xor eax,eax
x |= (1UL << argc);
1c: 48 83 c4 08 add rsp,0x8
printf("x=%x\n", x);
20: c3 ret
答案 1 :(得分:0)
看起来您正在按表格UNIQUE
进行分组。很可能这就是为什么你得到一个你不想要的记录。只需选择MAX(ActionDate)
,看看你得到了什么。
如果您获得了所需的记录,那么您必须弄清楚您选择/分组的列是否会导致您不想要的记录。我的猜测是TMOA.ObjectID
或TMOA.ID