powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Вывод значения из условии что день недели выходной
10 сообщений из 10, страница 1 из 1
Вывод значения из условии что день недели выходной
    #39456545
silveran2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет,

я второй день ломаю голову
у меня есть задача:
есть таблица, там два поля
select 1_value, 2_value from table1

возвращает 1000 2000

а мне надо придумать такой селект который бы возвращал только 1_value если
(select to_char (to_date (wdat_date), 'd') from dual,wdat) =1
(в wdat каждый день ставится нужная дата) а при не выполнения условия возвращал 2_value

если проще то если в wdat_date стоит дата воскресенье то возвращаем 1_value если же другой день недели то возвращаем 2_value

уже голову сломал(( сможете подсказать в какую сторону курить бамбук?
спасибо, я реально попыток 200 сделал а уже потом написал тут(((
...
Рейтинг: 0 / 0
Вывод значения из условии что день недели выходной
    #39456562
IgorSm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Оно?
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
with ts
as
(
select 1000 value1, 2000 value2 from dual
)
select case when   to_char(sysdate,'Day')  in ('Saturday ','Sunday') 
then value2 else value1 end val
from ts;


Где sysdate ваш wdat_date, ('Saturday ','Sunday') зависит от NLS
...
Рейтинг: 0 / 0
Вывод значения из условии что день недели выходной
    #39456619
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IgorSmОно?

Да нет, не оно не только из-за NLS:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
SQL> with ts
  2  as
  3  (
  4  select 'weekday' value1, 'weekend' value2 from dual
  5  )
  6  select to_char(sysdate + 1,'Day') day,
  7          case when   to_char(sysdate + 1,'Day')  in ('Saturday ','Sunday')
  8  then value2 else value1 end val
  9  from ts
 10  /

DAY       VAL
--------- -------
Sunday    weekday

SQL> with ts
  2  as
  3  (
  4  select 'weekday' value1, 'weekend' value2 from dual
  5  )
  6  select to_char(sysdate + 1,'Day') day,
  7          case when   to_char(sysdate + 1,'FMDay')  in ('Saturday','Sunday')
  8  then value2 else value1 end val
  9  from ts
 10  /

DAY       VAL
--------- -------
Sunday    weekend

SQL>



IgorSmГде sysdate ваш wdat_date, ('Saturday ','Sunday') зависит от NLS

Не умеешь ты NLS готовить:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
SQL> alter session set nls_language=russian;

Session altered.

SQL> with ts
  2  as
  3  (
  4  select 'weekday' value1, 'weekend' value2 from dual
  5  )
  6  select case when   to_char(sysdate + 1,'FMDay')  in ('Saturday','Sunday')
  7  then value2 else value1 end val
  8  from ts
  9  /

VAL
-------
weekday

SQL> with ts
  2  as
  3  (
  4  select 'weekday' value1, 'weekend' value2 from dual
  5  )
  6  select case when   to_char(sysdate + 1,'FMDay','nls_date_language=english')  in ('Saturday','Sunday')
  7  then value2 else value1 end val
  8  from ts
  9  /

VAL
-------
weekend

SQL>



А куда прoще через ISO:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
SQL> with ts
  2  as
  3  (
  4  select 'weekday' value1, 'weekend' value2 from dual
  5  )
  6  select case when sysdate - trunc(sysdate,'iw') >= 5
  7  then value2 else value1 end val
  8  from ts
  9  /

VAL
-------
weekend

SQL>



SY.
...
Рейтинг: 0 / 0
Вывод значения из условии что день недели выходной
    #39456624
silveran2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ребята спасибо, оно!!! ща буду встраивать в свой километровый селект)))
...
Рейтинг: 0 / 0
Вывод значения из условии что день недели выходной
    #39456640
silveran2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а вот конечный селект.. (как он мне мозг вынес((( )
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
 with ts
 as
(
select   '['||chr(39)||wdat_date||chr(39)||','||listagg(
(select max(yrcv_value) from yrcv where yrcv_noofadults=1 and yrcv_yrcd_id=yrcd_id), ', ') 
within group (order by ycat_id)||'],' as RT2,
'['||chr(39)||wdat_date||chr(39)||','||listagg((select max(yrcv_weekend_value) from yrcv where yrcv_noofadults=1 and yrcv_yrcd_id=yrcd_id),
 ', ') within group (order by ycat_id)||'],' as RT3,
 wdat_date
    from yrcd, yrch, yrct,(select * from wdat, ycat, wgbs where wdat_date between  wgbs_datevalue and (wgbs_datevalue+30))
    where yrcd_id=yrct_yrcd_id(+) and yrcd_yrch_id=yrch_id and yrct_ycat_id=ycat_id
    and wdat_date between yrcd.yrcd_startdate and yrcd.yrcd_enddate
    and yrch_id =1591
group by wdat_date
   )
  select case when   
  ((select to_char (to_date (wdat_date), 'd') day_of_week from dual)-(select to_char(yrch_weekend_sun) from yrch where yrch_id=1591))=0
 or
  ((select to_char (to_date (wdat_date), 'd') day_of_week from dual)-(select to_char(yrch_weekend_mon) from yrch where yrch_id=1591))=1
 or
  ((select to_char (to_date (wdat_date), 'd') day_of_week from dual)-(select to_char(yrch_weekend_tue) from yrch where yrch_id=1591))=2
 or
  ((select to_char (to_date (wdat_date), 'd') day_of_week from dual)-(select to_char(yrch_weekend_wed) from yrch where yrch_id=1591))=3 
 or
  ((select to_char (to_date (wdat_date), 'd') day_of_week from dual)-(select to_char(yrch_weekend_thu) from yrch where yrch_id=1591))=4 
 or
  ((select to_char (to_date (wdat_date), 'd') day_of_week from dual)-(select to_char(yrch_weekend_fri) from yrch where yrch_id=1591))=5 
 or
  ((select to_char (to_date (wdat_date), 'd') day_of_week from dual)-(select to_char(yrch_weekend_sat) from yrch where yrch_id=1591))=6 
 then RT2 else RT3 end val  
   from ts
...
Рейтинг: 0 / 0
Вывод значения из условии что день недели выходной
    #39456672
IgorSm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SY,

Спасибо который раз. Поспешишь (с утра) людей насмешишь :)
...
Рейтинг: 0 / 0
Вывод значения из условии что день недели выходной
    #39456775
silveran2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
дада... я на Сахалине.. у меня то 3 ночи было.. уже осознал где мой косяк был))
...
Рейтинг: 0 / 0
Вывод значения из условии что день недели выходной
    #39456779
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
silveran2
Код: plsql
1.
to_date (wdat_date)

Сплошной говнокод.
...
Рейтинг: 0 / 0
Вывод значения из условии что день недели выходной
    #39456782
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
silveran2
Код: plsql
1.
2.
...  select case when   
  ((select to_char (to_date (wdat_date), 'd') day_of_week from dual)-(select to_char(yrch_weekend_sun) from yrch where yrch_id=1591))

Тоже заставляет спросить: "что хотел сказать этим аффтар, какой-то тайный умысел?"
...
Рейтинг: 0 / 0
Вывод значения из условии что день недели выходной
    #39457214
MaximaXXL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
silveran2,

тоже странный код

Код: plsql
1.
(select * from wdat, ycat, wgbs where wdat_date between  wgbs_datevalue and (wgbs_datevalue+30)


т.е. мы имеем 3 таблицы wdat, ycat, wgbs и всего 2 поля для связки wdat_date, wgbs_datevalue из них, т.о. связав 2 таблицы мы перемножим (расплодим) одинаковые записи столько раз сколько записей в 3-ей таблице ...
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Вывод значения из условии что день недели выходной
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]