我有点迷失这个简单的查询
以下是带日期的查询( SERVICE_DATE ):
SELECT DISTINCT JOB_ID,
SERVICE_DATE,
GRAND_TOTAL,
TYPE_INSERT,
PAYMENT_ID
FROM TBL_XXX
WHERE USER_ID = 100
AND PAYMENT_ID <> 0
ORDER BY JOB_ID DESC;
我得到了这个结果:
467 18/10/2012 16 Upload 527811
467 18/10/2012 16 Upload 527811
466 18/10/2012 4 Key-In 527806
465 18/10/2012 4 Key-In 527804
464 17/10/2012 24 Upload 527784
464 17/10/2012 24 Upload 527784
464 17/10/2012 24 Upload 527784
此查询没有日期( SERVICE_DATE )
SELECT DISTINCT JOB_ID,
GRAND_TOTAL,
TYPE_INSERT,
PAYMENT_ID
FROM TBL_XXX
WHERE USER_ID = 100
AND PAYMENT_ID <> 0
ORDER BY JOB_ID DESC;
结果:
467 16 Upload 527811
466 4 Key-In 527806
465 4 Key-In 527804
464 24 Upload 527784
我在这里失踪了什么?
答案 0 :(得分:2)
您的service_date是一个包含时间部分的日期,但您的IDE仅显示日期部分。
要查看detalis,您可以更改IDE的首选项以获取日期或使用格式:
SELECT DISTINCT JOB_ID,
to_char(SERVICE_DATE,'yyyy-mon-dd hh24:mi:ss'),
GRAND_TOTAL,
...
答案 1 :(得分:1)
如果有效,请尝试运行此功能,我认为它与您的SERVICE_DATE
有关,因此我修改了您的查询以使用ROW_NUMBER()
和Windows功能。
SELECT JOB_ID,
SERVICE_DATE,
GRAND_TOTAL,
TYPE_INSERT,
PAYMENT_ID
FROM
(
SELECT JOB_ID,
SERVICE_DATE,
GRAND_TOTAL,
TYPE_INSERT,
PAYMENT_ID,
ROW_NUMBER() OVER (PARTITION BY JOB_ID
ORDER BY SERVICE_DATE DESC) rn
FROM TBL_XXX
WHERE USER_ID = 100
AND PAYMENT_ID <> 0
) x
WHERE rn = 1
ORDER BY JOB_ID DESC
答案 2 :(得分:1)