View
217
Download
1
Embed Size (px)
Citation preview
SQL for Elite!
John AshleyFinancial Systems Administrator
Moore & Van Allen PLLC
Mining the Enterprise Database
3
Database Structures♦Elite Documentation
– Heavy SQL users, print a copy out to have handy
– See table structures in Query Analyzer or Management Studio’s Object Explorer
4
Major Elite Tables & Indices♦ matter
– mmatter, mclient, mbillaty
♦ client– clnum, crelated
♦ timekeep– tkinit
♦ ledger– lindex, lmatter, llcode,
lbatch
♦ timecard– tindex, tmatter, ttk, tbatch
♦ cost– cindex, cmatter, ctk,
ccode, cbatch
♦ batch– bbatch
♦ trsttran– trindex, tmatter, tracct,
trbatch
♦ prohead– phindex, phmatter,
phbatch
♦ udf– udfindex, udjoin
♦ ap– apnum
♦ apaddr– apnum, apaddid
♦ apvo– vo_id, apnum, apaddid
♦ csd– cknum, baid, apnum
5
SQL Basics♦SELECT
– Identifies the columns in the resulting output
♦FROM– Identifies the source tables
♦WHERE– Applies criteria to the output
♦GROUP BY– Applies grouping when using summary
functions
♦HAVING– Applies criteria based on GROUP BY
♦ORDER BY– Applies sorting to the output
6
Aliases♦Alias a column or table within the SELECT
or FROM clause– SELECT matter.mmatter matnum …– SELECT matter.mmatter AS matnum …
♦Reference the columnsusing the table alias– Helpful when joining
the same table multipletimes in the same query
7
Joins♦INNER JOIN
– Returns only records from two tables that match
♦LEFT OUTER JOIN– Returns all records from left
table and any records from the right table that match
♦RIGHT OUTER JOIN– Returns all records from the
right table and any records from the left table that match
– Usually best to rewrite as a LOJ
8
Methods of Joining♦Join in the WHERE clause
– SELECT client.clname1, matter.mdesc1FROM client, matterWHERE client.clnum = matter.mclient
– Inner Join (=); Left Outer Join (*=), Right Outer Join (=*)
♦Join in the FROM clause– SELECT client.clname1, matter.mdesc1
FROM clientINNER JOIN matter ON client.clnum = matter.mclient
– Preferred Method◊ Easier to read◊ Helps avoid Cartesian joins◊ ANSI Standard
9
Left Outer Join Sample♦Number of open matters by billing
attorney for all Senior PartnersInner Join Outer Join (correct)
10
Querying Tip #1♦Build queries one table at a time
– Start with the specific population ◊ Information on Non-Terminated Associates
SELECT *FROM timekeepWHERE tktitle = ‘Associate’AND tktmdate IS NULL
◊ Note the number of records returned
– Add additional tables– Ensure record count remains constant
11
Criteria in Outer Joins♦Use criteria within the join
– Often necessary with outer joins
Criteria in WHERE Criteria in FROM
66 records 67 records
12
Limiting Result Sets♦Two options to limit your result set to a
specific number of records– Top 10 Members by worked hours for 2009
TOP SET ROWCOUNT
13
UDF Fields♦UDF fields in Elite
can be set up for many different types of records– Each UDF has an
index and is tied to a UDF type (i.e. matter, client, timekeep, vendor, etc.)
– For validated fields, it is easy to find the index number by pulling up a record in the master file
14
UDF Fields, cont.♦UDF list can be printed from Elite under
Setups / Other / User Defined Fields♦Alternatively, the code below will give you
a list of UDFs sorted by type and line #– Keep handy if you will be querying on UDFs
often
15
UDF Fields, cont.♦UDF values are stored in
the udf table♦UDF validation descriptions
are stored in the udfval table
♦Example Query:– Firms that use Whitehill likely
have a matter udf called Total Hours Billing that displays the total hours on an invoice. How many open matters are set to display or not display Total Hours?
16
Summary Tables♦Summary tables in Elite are used for
Inquiry.– matths
◊ Summary statistics by matter by period
– mattimhs◊ Summary statistics by matter by working timekeeper
by period
– timewahs◊ Summary statistics by working timekeeper by period
♦Make sure you pick the right column for the exact data that you need
17
Summary Table Examples♦Year-to-date Collections for all matters of a
client– Collections will match Matter Inquiry in Elite
19
periodt Table♦When querying across multiple periods, I
highly recommend using the periodt table.Not using periodt Using periodt
20
Transaction Volume Samples♦It is often helpful to see how much data is
being processed within Elite over a given date range– Trust Volume Example – Number and absolute
dollar value of transactions by period
21
Transaction Volumes, cont.♦Billing volume example – Number, amount
and average of invoices processed by billing operator
27
Tips & Tricks♦Use a read-only login when using Query
Analyzer or SQL Server Management Studio– You don’t want to make any inadvertent
changes
♦Use UPPER-CASE for all SQL specific words– This makes queries much easier to read when
revisiting later
♦Use TOP clause to limit results when testing– SELECT TOP 100 *
FROM clientORDER BY clnum
– This is especially helpful when determining which columns to pull into result set
28
Tips & Tricks♦Comment your code!
– use two dashes to comment out the remainder of a line
– use slash star ( /* ) to begin commenting and star slash ( */ ) to close comment
30
Contact Info
John AshleyFinancial Systems Administrator
Moore & Van Allen [email protected]
704-331-3578