2012-04-20 43 views
0

我剛剛開始在工作中學習SQL,但我遇到了與subquerys有關的問題。 我希望不僅僅是一個查詢,而是解釋如何創建子查詢。SQL查詢幫助 - 子查詢/嵌入查詢

當前的SQL查詢

SELECT to_char(P_DT, 'yyyy-mm-dd HH:mi:ss'), COUNT, LATENCY 
FROM latency ORDER BY P_DT 

返回

to_char(P_DT, 'yyyy-mm-dd HH:mi:ss'), COUNT, LATENCY 
2012-04-20 03:42:00  83659 1m 
2012-04-20 03:42:00 70305 2m 
2012-04-20 03:42:00 105194 4m 
2012-04-20 03:43:00 70277 1m 
2012-04-20 03:43:00 0 2m 
2012-04-20 03:43:00 0 4m 

我需要什麼

to_char(P_DT, 'yyyy-mm-dd HH:mi:ss'), COUNT.LATENCY='1m', COUNT.LATENCY='2m', COUNT.LATENCY='4m' 
2012-04-20 03:42:00 83659  70305  105194 
2012-04-20 03:43:00 70227  0   0 

感謝

數據庫有3列:時間戳,計數,延遲型

Tmestamp = progressive timestamp for each min 
Count = count, just a number 
Latency Type = 1m, 2m or 4m 

每個時間戳都有1m,2m和4m延遲,但這些都是不同的行。

我需要返回一行是 時間戳,計算在時間戳1M,計算在時間戳2M,在時間戳

計數4米我無法改變的,而不是count1m列count2m列的數據庫等

看它是這三個查詢合併爲一個

SELECT to_char(P_DT, \'yyyy-mm-dd HH:mi:ss\'), COUNT 
FROM LATENCY 
WHERE SOURCE_ID=\'2\' AND LATENCY = \'1m\' 
GROUP BY to_char(P_DT, \'yyyy-mm-dd HH:mi:ss\') 
ORDER BY to_char(P_DT, \'yyyy-mm-dd HH:mi:ss\') 

SELECT to_char(P_DT, \'yyyy-mm-dd HH:mi:ss\'), COUNT 
FROM LATENCY 
WHERE SOURCE_ID=\'2\' AND LATENCY = \'2m\' 
GROUP BY to_char(P_DT, \'yyyy-mm-dd HH:mi:ss\') 
ORDER BY to_char(P_DT, \'yyyy-mm-dd HH:mi:ss\') 

SELECT to_char(P_DT, \'yyyy-mm-dd HH:mi:ss\'), COUNT 
FROM LATENCY 
WHERE SOURCE_ID=\'2\' AND LATENCY = \'4m\' 
GROUP BY to_char(P_DT, \'yyyy-mm-dd HH:mi:ss\') 
ORDER BY to_char(P_DT, \'yyyy-mm-dd HH:mi:ss\') 
+1

如果你解釋你說幾句話需要什麼,我有機會了解:) – 9000 2012-04-20 18:34:10

回答

1

如果我理解正確的,你一個不同的方式,這應該這樣做:

SELECT to_char(P_DT, 'yyyy-mm-dd HH:mi:ss'), 
     SUM(CASE WHEN LATENCY = '1m' THEN COUNT ELSE 0 END) AS LATENCY1m, 
     SUM(CASE WHEN LATENCY = '2m' THEN COUNT ELSE 0 END) AS LATENCY2m, 
     SUM(CASE WHEN LATENCY = '4m' THEN COUNT ELSE 0 END) AS LATENCY4m 
FROM latency 
GROUP BY to_char(P_DT, 'yyyy-mm-dd HH:mi:ss') 
ORDER BY to_char(P_DT, 'yyyy-mm-dd HH:mi:ss') 
+0

錯誤:FROM關鍵字未找到預期 – 2012-04-20 18:42:51

+0

@ djc391 - 怪異的'FROM'就在那裏 – Lamak 2012-04-20 18:44:51

+0

什麼是 SUM(如果延遲時間='1m',那麼延遲時間爲0結束)AS 應該這樣做嗎? – 2012-04-20 18:47:29