我正在尝试创建一个检查缺少的人工交易的视图.该视图将被提供给Crystal报表.
在这种情况下,视图应该采用sysdate + 30和sysdate -30之间的所有日期,然后应该为每个日期的活动员工留下外部联接所有人工记录.然后,它计算每个员工每个日期的人工交易数量.
这将传递给Crystal Report,Crystal Report将根据特定日期范围(视图在+/- 30范围内)进行过滤.从那里,Crystal中每位员工的总计数将总计,员工将显示零交易.
在没有吐出每个日期的列表的情况下,最初,我正在为每个日期使用人工交易,但有些日期没有任何计数.这些人显示空交易日期为零小时.这表明他们在整个期间都没有收费,这是有道理的.
但是,当Crystal对该数据进行过滤并选择范围时,我相信它会遗漏这些空值,因此不允许我显示没有时间提交的所有人.
有没有办法在视图中执行"选择(sysdate + 30)和(sysdate-30)之间的每个日期",以便我可以使用它来比较所有时间?
SELECT QUERY.LABORRECLABORCODE
, QUERY.LABORRECEMPLOYEENUM
, QUERY.PERSONRECDISPLAYNAME
, QUERY.TRANSSTARTDATE
, COUNT(TRANSROWSTAMP) AS ROWCOUNT
FROM (SELECT *
FROM (SELECT LABOR.LABORCODE AS LABORRECLABORCODE
, LABOR.LA20 AS LABORRECEMPLOYEENUM
, PERSON.DISPLAYNAME AS PERSONRECDISPLAYNAME
FROM LABOR
LEFT OUTER JOIN PERSON
ON ( LABOR.LABORCODE = PERSON.PERSONID )
WHERE LABOR.STATUS = 'ACTIVE'
AND LABOR.LA20 IS NOT NULL
AND PERSON.DISPLAYNAME IS NOT NULL
AND LOWER(PERSON.DISPLAYNAME) NOT LIKE '%kimball%'
AND LOWER(PERSON.DISPLAYNAME) NOT …Run Code Online (Sandbox Code Playgroud) 我需要生成两个给定日期之间的所有日期.只要只有一个日期范围,这样就可以正常工作.但是,如果我有多个日期范围,则此解决方案不起作用.我在这里以及在asktom上搜索过,但无法找到相关的指针/解决方案.
我使用all_objects和CONNECT BY ROWNUM尝试了两种解决方案,但没有运气.这是问题陈述:sqlfiddle
输入
ID START_DATE END_DATE
101 April, 01 2013 April, 10 2013
102 May, 10 2013 May, 12 2013
Run Code Online (Sandbox Code Playgroud)
产量
ID Dates
101 April, 01 2013
101 April, 02 2013
101 April, 03 2013
101 April, 04 2013
101 April, 05 2013
101 April, 06 2013
101 April, 07 2013
101 April, 08 2013
101 April, 09 2013
101 April, 10 2013
102 May, 10 2013
102 May, 11 2013
102 May, 12 2013
Run Code Online (Sandbox Code Playgroud) 我希望在这里获得一些集体经验,那么您在数据库设计中总是包含什么(如果有的话)实用程序表或公共字段?
一个例子是我总是包含一个App_Errors表来存储任何未捕获的异常信息,以及一个App_Audit存储所有编辑信息的表.
我(在我自己的脑海中)提出了包括RecordCreatedDate和RecordLastEditedDate在每个数据表上的好处,但没有得出关于信息是否真的有用的任何结论.
提出更多方向的问题 - 我目前的重点是全球可访问的Web应用程序(想想社交网络).
TA!
我的问题类似于以下问题:
http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:14582643282111
区别在于我的内部查询返回两条记录,而我有外部查询。
我需要编写类似这样的内部查询,它会给我一个两个日期范围之间的日期列表(我正在尝试这个查询,但它不执行)。
Select * from outerTable where my_date in
(
select to_date(r.REQ_DATE) + rownum -1
from all_objects, (MY_INNER_QUERY Where ID =100) r
where rownum <= to_date(r.DUE_DATE,'dd-mon-yyyy')-to_date(r.REQ_DATE,'dd-mon-yyyy')+1;
)
Run Code Online (Sandbox Code Playgroud)
我的内部查询返回以下 2 行:
Select * from innerTable Where ID =100
Start date end date
3/19/2013 3/21/2013
3/8/2013 3/8/2013
Run Code Online (Sandbox Code Playgroud)
所以我需要内部查询,它将返回以下日期到外部查询:
3/19/2013
3/20/2013
3/21/2013
3/8/2013
Run Code Online (Sandbox Code Playgroud)