Sql 在表中找不到数据时如何获取具有默认值的行
我有一个表,其中包含一些带有日期字段的数据 例: 现在我需要得到每个月的天数Sql 在表中找不到数据时如何获取具有默认值的行,sql,oracle,date,oracle11g,Sql,Oracle,Date,Oracle11g,我有一个表,其中包含一些带有日期字段的数据 例: 现在我需要得到每个月的天数 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_D
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 |
我想要的输出是这样的
|NO_OF_DAYS |MONTH|
------------ -----
| | |
|NO_OF_DAYS |MONTH|
------------ -----
|0 |JUN |
有没有办法做到这一点
注意:我更新了我的问题,因为它不清楚。很抱歉,我第一次无法正确提问。如果我理解得很好,您可能需要以下内容:
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
您的查询将给出您期望的结果 如果要在一次查询中获得结果,请执行以下操作:
select to_char(SCHEDULED_DATE, 'mon-yyyy'), 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 = '439'
group by to_char(SCHEDULED_DATE, 'mon-yyyy');
如果您还想为不同的seq执行此操作,您可以执行以下操作:
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;
这将返回每个月的计数,您可以在Java端进行处理。我不理解您的问题。您的查询将只返回一行。但是您显示的是一个三行的结果集。@GordonLinoff否我给出了一个示例,该查询从我的程序中动态获取
seq
和month
值。我重复一遍:您问题中的查询将只返回一行。如果没有匹配的行,则计数将为零。你的整个问题没有意义。也许你应该问另一个问题,并展示更完整的代码。似乎你编写的查询将准确返回这些数字:5月2,6月0,7月1。你是说输出有问题吗?如果是,什么?@mathguy我已经更新了我的查询,请看一看你能解释一下什么是参数
和dual
参考吗to@TonyRoczz参数只是我给日期的别名,这里描述了dual