Ok...I think I have a better idea of what you need based on the comments above.
First off, if all you need it DB2, I'd go download DB2 10.1 Express-C (the link will take you to whatever is the latest at the time. At the time of this post it is 10.1 Fix Pack 2) to get you started. It is the same binaries as Enterprise Server Edition. All you need to do is purchase a license from IBM and apply it using db2licm -a <license file name>
in order to turn your Express-C into Enterprise Server Edition. Now, that aside, since you are installing this on Windows, make sure you download the appropriate bit version (ie, 32 bit vs 64 bit).
Also, and this from my experience on Windows, make sure you install the 64 bit DB2 into Program Files (no matter which drive you install it to) and if you install the 32 bit DB2, install it into Program Files (x86) (on a 64 bit OS). If you don't do this, Windows won't find the DB2 drivers for any ODBC connections you wish to set up. And even with that, I've had hit and miss luck with 32 bit DB2 on 64 bit Windows.... Best to just use 32 bit DB2 on 32 bit Windows and 64 bit DB2 on 64 bit Windows.
Ok...whew! Now that aside, once you install DB2, it will automatically create an instance named DB2 and most likely create a database called SAMPLE (which you can always remove).
I've found it best (and this is just me) to use a system or local account for the admin ID for DB2. Either way, make sure you let DB2 create the DB2ADMNS and DB2USERS groups. Anyone you want to be able to maintain DB2 will need to be in the DB2ADMNS group and obviously if you just want to access DB2 in the DB2USERS group.
DB2 automatically comes with the DB2 Control Center,which is clunky as all get out. But don't let that turn you off. That is just a GUI, the actual database itself is amazingly fast and powerful. Besides as of version 9.5 or 9.7, IBM has deprecated the Control Center. They still have packaged it with DB2, but they really recommend that you download IBM Data Studio, which is a free, Eclipse-based product that you can use to interact with DB2. I recently downloaded it and tried it. I love it waaaaay better than Control Center. We (the DBAs at our company) are going to work on a project to roll out Data Studio to replace end user and developer access to DB2 to move away from Control Center.
When you download Data Studio, pick the "full product image" under the "Optional Downloads" section. It should be the one about 1.5GB rather than the one above that is only 112MB.
Anyway, hope this gets you started. Let me know if you have other questions.
You say you have a date table. You don't give a name so I shall refer to it as DateTable
and the column in it as TheDate
. You need to select from this table and LEFT OUTER JOIN
to it. That way all dates in the range will have a row in the output with NULL for rows where you don't have "real" data. You can convert these to zero using COALESCE
. I'll use your first posted query as an example:
Select
dd.date,
dd.week,
sum(COALESCE(p.policy_count, 0)) Policies
from DateTable dt -- Your date table
left outer join magenta.policies p -- left join includes all dates and any polices that exist
on p.trans_date = dt.TheDate
left outer join global.dim_date dd
on dd.date = p.trans_date
-- use DateTable in the WHERE to get the full range of time.
Where dt.TheDate between (select week - 112 days from global.TODAY_DATE)
and (select week - 1 day from global.TODAY_DATE)
Group by
dd.date,
dd.week
Sorry, don't have a DB2 instance to hand to test it. Forgive any typos I may have introduced.
Best Answer
With Db2 (LUW) Temporal Tables, there is not any option to exclude updates from a certain user.
However, the
SET_MAINT_MODE_RECORD_NO_TEMPORALHISTORY
procedure is available, and can be called by a user (if a user is granted permission on it), and this will disable the recording of temporal history for system-period temporal tables with the the duration of the current session.https://www.ibm.com/support/knowledgecenter/en/SSEPGG_11.1.0/com.ibm.db2.luw.sql.rtn.doc/doc/r0060661.html