0

我想通過使用以下查詢來獲取RANK。我 不知道我到底在哪裏。 任何人都可以幫助我嗎?沒有得到Rank()分區的適當等級按DateTime

SELECT ID,CMNo,PLat,PLon,RDTime 
    ,RANK() OVER (PARTITION BY CMNo,PLat,PLon,RDTime ORDER BY RDTime) Ranks 
FROM tblMAEH WITH(NOLOCK) 
WHERE CMNo = 69 
AND  RDTime BETWEEN '2014-10-19 00:00:00.000' AND '2014-10-20 23:59:59.997' 

enter image description here

CREATE TABLE #test (id  INT,CMNo INT,PLat NUMERIC(22, 6),Plon NUMERIC(22,  6),RDTime DATETIME) 

INSERT INTO #test VALUES  (8630,69,19.08491,72.83919,'21 oct 2014 14:38:13') 
INSERT INTO #test VALUES  (8631,69,19.08491,72.83919,'22 oct 2014 18:38:13') 
INSERT INTO #test VALUES  (8632,69,19.08491,72.83919,'20 oct 2014 14:39:13') 
INSERT INTO #test VALUES  (8633,69,19.08491,72.83919,'20 oct 2014 14:38:13') 


SELECT ID,CMNo,PLat,PLon,RDTime,Rank()OVER (PARTITION BY CMNo, PLat, PLon, RDTime Order       BY RDTime) Ranks 
FROM #test WITH(NOLOCK) 
WHERE CMNo = 69 
AND RDTime BETWEEN '2014-10-19 00:00:00.000' AND '2014-10-25 23:59:59.997' 

drop table #test 

enter image description here

+0

添加tblMAEH表的數據。 – 2014-10-30 10:27:54

+0

其實輸出中有什麼問題。你需要什麼產出? – 2014-10-31 07:24:53

+0

即使有你的例子,我也沒有太多的東西想要弄清你想要達到的目標。你可以嘗試編輯這個問題,並告訴我們你想要做什麼,以及*期望的輸出是什麼? – 2014-10-31 07:27:08

回答

0

由於日期時間的毫秒部分的排名並沒有爲所有標有紅色標記的選擇行獲得1。

即用於ex.for ID 8630的RDTime值是2014年10月20日14時38分13秒

可能的RDTime字段的實際值是2014年10月20日14:38:13.000 和用於下一行的毫秒部分是不同的。所以四行的排名不一樣。

因此,請消除RDTime字段的毫秒部分,然後嘗試重新查詢相同的SQL。

+0

找出你所建議的等級,面對同樣問題 – user1990383 2014-10-30 10:09:08

+0

請在我的問題中看到。在上面的查詢中添加了屏幕截圖 – user1990383 2014-10-31 06:13:42

0

我不知道你是如何得到這個輸出的。我在你的問題中運行了相同的查詢,但我沒有得到那個輸出。除非你用row_number()你不會得到那個輸出。檢查這個。

CREATE TABLE test 
    (id  INT,CMNo INT,PLat NUMERIC(22, 6),Plon NUMERIC(22, 6),RDTime DATETIME) 

INSERT INTO #test 
VALUES  (8630,69,19.08491,72.83919,'20 oct 2014 14:38:13'), 
      (8631,69,19.08491,72.83919,'20 oct 2014 14:39:13'), 
      (8632,69,19.08491,72.83919,'21 oct 2014 14:38:13'), 
      (8633,69,19.08491,72.83919,'22 oct 2014 14:38:13') 

SELECT ID,CMNo,PLat,PLon,RDTime, 
     Rank()OVER (PARTITION BY CMNo, PLat, PLon 
      ORDER BY RDTime) Ranks 
FROM #test 
WHERE CMNo = 69 

ID  CMNo PLat  PLon  RDTime     Ranks 
---- ---- --------- --------- ----------------------- ----- 
8630 69  19.084910 72.839190 2014-10-20 14:38:13.000 1 
8631 69  19.084910 72.839190 2014-10-20 14:39:13.000 2 
8632 69  19.084910 72.839190 2014-10-21 14:38:13.000 3 
8633 69  19.084910 72.839190 2014-10-22 14:38:13.000 4 
+0

,當我更改日期時,即使強硬排名仍然爲1,所有記錄 – user1990383 2014-10-31 05:46:44

+0

然後顯示有效示例!!顯示不同日期的例子,然後vl幫助你.. – 2014-10-31 06:00:45

+0

請參閱我的問題。添加屏幕截圖 – user1990383 2014-10-31 13:47:13