有关SQL语句,在线等...

来源:百度知道 编辑:UC知道 时间:2024/06/15 15:50:35
表A
CALENAME ,CALENO ,DAYN,WDAYNUM1 WDAYNUM2 WDAYNUM3 WDAYNUM4

200809 0 30 20080901 20080902 20080903 20080903

200809 1 30 1 1 1 0

(1为工作日) (0为假)
其中CALENAME为年+月 ,CALENO为日历编号,DAYN为月天数,

WDAYNUM+n 为月编号(1``31)

怎样查出假期???请大家给出解决方法,谢谢各位!
没办法,特闷设计好的表,我只能在其中查数据,没有权限去修改的。表是他人设计的,我也很无赖!

我提供一种思路
先这样查询,查出一天为假期的所有日历年月日编号,然后就看你需要得到什么结果集了,你再自己去设计,插入到一张新表,或者用存储过程显示出来,或者用复杂的语句把这些UNION或者连接起来。
select CALENO||'-'||CALENAME||'01' as 1号假期 from A where WDAYNUM1 = 0;
--1号假期的格式为 日历编号-年月日
select CALENO||'-'||CALENAME||'02' as 2号假期 from A where WDAYNUM2 = 0;
。。。
select CALENO||'-'||CALENAME||'27' as 27号假期 from A where WDAYNUM27 = 0;
select CALENO||'-'||CALENAME||'28' as 28号假期 from A where WDAYNUM28 = 0 and CALENO >27;
select CALENO||'-'||CALENAME||'29' as 29号假期 from A where WDAYNUM29 = 0 and CALENO >28;
select CALENO||'-'||CALENAME||'30' as 30号假期 from A where WDAYNUM30 = 0 and CALENO >29;
select CALENO||'-'||CALENAME||'31' as 31号假期 from A where WDAYNUM31 = 0 and CALENO >30;

你这样设计的数据库想获取值不是办不到而是比较麻烦复杂了。一个日期一个日期的找出来判断也太麻烦了。

数据库可以改为:ID (自动编号) CALENAME(年加月) CALENO(日历编号) DAYN(天数) W