【发布时间】:2016-04-29 16:27:04
【问题描述】:
我是 sql 新手,我需要您在以下方面的帮助。非常感谢您抽出宝贵时间!
Locprog 表列出了在各个位置启动程序的日期(每个位置由唯一的 LOC 指示符标识)
LOC PROG DATE_STARTED
121 P 10-JUL-95
131 P 11-JUL-95
141 P 18-APR-00
151 P 19-APR-00
161 P 26-MAY-06
171 P 28-MAY-06
181 P 30-APR-15
191 P 31-APR-15
192 P 19-JAN-16
195 P 20-JAN-16
DTWK 表给出了与特定日期相关的周数
D_IND W_IND
09-JUL-95 199501
10-JUL-95 199502
11-JUL-95 199502
12-JUL-95 199502
13-JUL-95 199502
14-JUL-95 199502
15-JUL-95 199502
16-JUL-95 199502
17-JUL-95 199502
... ...
18-APR-00 200005
19-APR-00 200005
26-MAY-06 200602
28-MAY-06 200602
30-APR-15 201504
31-APR-15 201504
19-JAN-16 201603
20-JAN-16 201603
问题:我想查找在 200602 周和 201603 周之间该计划处于活动状态的位置数量
我试过了
select count(*) from (
select distinct A.LOC, A.Date_started, B.w_ind as wk from Locprog A, DTWK B
where a.date_started=B.d_ind) aa
where aa.wk<=200602
答案:6
我在尝试在
select count(*), bb.wek from (
select distinct A.LOC, A.Date_started, B.w_ind as wk from Locprog A, DTWK B
where a.date_started=B.d_ind) aa
where aa.wk<= ( select distinct W_ind as wek fromDTWK where W_ind between 200602 and 201603) bb
group by bb.wk
order by bb.wk
查询不起作用。你能帮忙吗?谢谢!
想要的输出
wk count
200602 6
201504 8
201603 10
【问题讨论】:
-
尝试:SELECT COUNT(LOC) FROM LOCPROG WHERE DATE_STARTED IN (SELECT D_IND FROM DTWK WHERE W_IND BETWEEN 200602 AND 201603) GROUP BY LOC;
-
为什么不只是
WHERE aa.wk BETWEEN 200602 AND 201603? -
根据您的样本数据将是所需的输出吗?
-
不清楚为什么要使用像
<=这样的比较运算符和子查询返回的周数列表。它应该小于多少? -
是mysql还是oracle?你们都标记了
标签: mysql sql sql-server database oracle