我有一个表,看起来像这样:加入两个SELECT语句和调整他们
+-----------+--------------+---------------------+
| ENTRY_ID | EMPLOYEE_ID | ACCESS_TIME |
+-----------+--------------+---------------------+
| 001 | 1001 | 6/3/2014 8:08:00 AM |
+-----------+--------------+---------------------+
| 777 | 1201 | 8/3/2015 7:07:00 AM |
+-----------+--------------+---------------------+
| 888 | 1901 | 9/9/2015 4:04:00 PM |
+-----------+--------------+---------------------+
为了获得唯一的用户数量为特定的日期范围,我有以下代码:
SELECT COUNT(UNIQUE Employee_Id) Unique_Monthly_Users FROM
(SELECT * FROM CORE.DATE_TEST
WHERE ACCESS_TIME >= TO_DATE('8/1/2015 00:00:00', 'MM/DD/YYYY HH24:MI:SS')
AND ACCESS_TIME < TO_DATE('9/1/2015 00:00:00', 'MM/DD/YYYY HH24:MI:SS')
ORDER BY ACCESS_TIME ASC)
而获得当月该范围,我使用这个:
SELECT UNIQUE TO_CHAR(ACCESS_TIME, 'Month') Month_Name FROM (
SELECT * FROM CORE.DATE_TEST
WHERE ACCESS_TIME >= TO_DATE('8/1/2015 00:00:00', 'MM/DD/YYYY HH24:MI:SS')
AND ACCESS_TIME < TO_DATE('9/1/2015 00:00:00', 'MM/DD/YYYY HH24:MI:SS')
ORDER BY ACCESS_TIME ASC)
这是我的最终所需的输出:
+--------------+-----------+
| UNIQUE_USERS | MONTH |
+--------------+-----------+
| 702931 | JANUARY |
+--------------+-----------+
| 900000 | FEBRUARY |
+--------------+-----------+
| 2139041022 | MARCH |
+--------------+-----------+
现在我想加入这些语句:
SELECT COUNT(UNIQUE EMPLOYEE_ID) Unique_Emp FROM
((SELECT * FROM CORE.DATE_TEST
WHERE ACCESS_TIME >= TO_DATE('8/1/2015 00:00:00', 'MM/DD/YYYY HH24:MI:SS')
AND ACCESS_TIME < TO_DATE('9/1/2015 00:00:00', 'MM/DD/YYYY HH24:MI:SS')
ORDER BY ACCESS_TIME ASC) col1)
INNER JOIN (SELECT UNIQUE TO_CHAR(ACCESS_TIME, 'Month') Month_Name FROM (
(SELECT * FROM CORE.DATE_TEST
WHERE ACCESS_TIME >= TO_DATE('8/1/2015 00:00:00', 'MM/DD/YYYY HH24:MI:SS')
AND ACCESS_TIME < TO_DATE('9/1/2015 00:00:00', 'MM/DD/YYYY HH24:MI:SS')
ORDER BY ACCESS_TIME ASC
) col2)
) ON COL1.ENTRY_ID = COL2.ENTRY_ID
...但显然这是不行的。我无法获得“id”,因为不应该有任何结果集的ID。两者都是外部存在的集合。我得到以下错误:ORA-00904: "COL2"."ENTRY_ID": invalid identifier
如何正确地加入这些结果集,以便我可以得到所需的输出?
呃......并且觉得我几乎有这个,但忘了添加一个“GROUP BY”。非常感谢你。 –