我有一个表格,其中包含一些带有日期字段的数据。
前:
|SCHEDULED_DATE |
---------------
|06-MAY-2016 |
|08-MAY-2016 |
|10-JUL-2016 |
现在我需要获得每个月的天数。
SELECT CASE WHEN (
SELECT COUNT(*)
FROM SCHEDULE
WHERE SEQ = '429'
AND TO_CHAR((SCHEDULED_DATE),'MON-YYYY')='MAY-2016')=0
THEN 0
ELSE (SELECT COUNT(*)
FROM SCHEDULE
WHERE SEQ = '429'
AND TO_CHAR((SCHEDULED_DATE),'MON-YYYY')='MAY-2016')
END
AS NO_OF_DAYS, NVL(TO_CHAR((SCHEDULED_DATE),'MON'),'MAY') AS MONTH
FROM SCHEDULE
WHERE SEQ = '429';
在NVL
中,我将在执行
当我在MAY
月份运行此查询时,我得到值2,输出就是这样。
|NO_OF_DAYS |MONTH|
------------ -----
|2 |MAY |
但是对于JUN
月,我需要将其显示为0,但输出是这样的
|NO_OF_DAYS |MONTH|
------------ -----
| | |
我想要的输出是这样的
|NO_OF_DAYS |MONTH|
------------ -----
|0 |JUN |
无论如何要实现这个目标吗?
注意:我已经更新了我的问题,因为它不清楚。对不起我第一次没能问好。
答案 0 :(得分:0)
如果我理解得很好,你可能需要这样的东西:
SQL> select count(1), parameter
2 from (select '07-2016' parameter from dual)
3 inner join schedule on parameter = to_char(SCHEDULED_DATE, 'mm-yyyy')
4 where seq = '429';
COUNT(1) PARAMET
---------- -------
1 07-2016
答案 1 :(得分:0)
您的查询将给出您期望的结果。
如果您想在一个查询中获得结果,请执行以下操作:
select to_char(SCHEDULED_DATE, 'mon-yyyy'), seq, count(*) FROM SCHEDULE
--optionally to get only some months
where to_char(SCHEDULED_DATE, 'mon-yyyy') in (/*fill values from your array here*/)
and seq in (/*fill values from array of seqs*/)
group by to_char(SCHEDULED_DATE, 'mon-yyyy'), seq;
如果你也想为不同的seq做到这一点,你可以这样做:
// Drop Down Menus
var subToggle = document.getElementsByClassName("submenu-toggle");
var menu = subToggle.children;
for (var i = 0; i < subToggle.length; i++) {
subToggle.item(i).onclick = function () {
menu[1].style.display = "block";
}
}
这将返回每个月的每个seq的计数,然后您可以在Java端处理。