SQL查询帮助-子查询/嵌入查询

SQL查询帮助-子查询/嵌入查询,sql,oracle,Sql,Oracle,我刚开始在工作中学习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-0

我刚开始在工作中学习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,时间戳计数4m

我无法将数据库更改为而不是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\')

如果我理解正确,这应该可以做到:

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')

如果你用几句话解释了你需要什么,我就有机会理解:)错误:FROM关键字not found where expectedWhat is SUM(当延迟为'1m'时,则延迟为0 END)应该怎么做?@djc391-可能是列的别名?我真的不知道你为什么会得到这个错误op有一个名为
[count]的列
我认为你应该显示它,而不是
SUM
ing…@MatthewPK-关于列,你是对的,我更改了
SUM
以反映这一点,尽管我仍然认为唯一的方法是
ing