Author |
Topic |
CRYSTALM
Starting Member
16 Posts |
Posted - 2007-04-15 : 21:34:02
|
I literally pick up the book sql for mere mortals friday night. I have these 6 queries I would like to turn into one result data set. here are my queries:Print '-----------------------------------------------------'Print '2006 DAILY TRANSACTION IMPORTS'Print 'Provided by: Crystal McAdams'Print '-----------------------------------------------------'SELECT TXN_DAT AS 'TRANSACTION DATE', SUM (TXN_AMT) AS 'TOTAL DAILY AMOUNT' FROM TXNHISWHERE TXN_DAT BETWEEN '01/01/2006' AND '12/31/2006'GROUP BY TXN_DAT ORDER BY TXN_DAT ASC GOSELECT TXN_DAT AS 'TRANSACTION DATE', SUM (TXNHIS.TXN_AMT) AS 'DAILY INCOMING AMOUNT' FROM TXNHIS INNER JOIN CODFIL ON TXNHIS.TXN_COD = CODFIL.COD_CODWHERE CODFIL.COD_TYP = 'I ' AND TXN_DAT BETWEEN '01/01/2006' AND '12/13/2006'GROUP BY TXN_DAT ORDER BY TXN_DAT ASC GOSELECT TXN_DAT AS 'TRANSACTION DATE', SUM( TXNHIS.TXN_AMT) AS 'DAILY OUTGOING AMOUNT' FROM TXNHIS INNER JOIN CODFIL ON TXNHIS.TXN_COD = CODFIL.COD_CODWHERE CODFIL.COD_TYP = 'O' AND TXN_DAT BETWEEN '01/01/2006' AND '12/13/2006'GROUP BY TXN_DAT ORDER BY TXN_DAT ASC GO SELECT TXNHIS.TXN_DAT AS 'DATE', COUNT (TXN_DAT) AS 'SUM OF DAILY TRANSACTIONS'FROM TXNHISWHERE TXN_DAT BETWEEN '01/01/2006' AND '12/31/2006'GROUP BY TXN_DAT ORDER BY TXN_DAT ASC GOSELECT TXNHIS.TXN_DAT AS 'DATE', COUNT (TXN_DAT) AS 'SUM OF DAILY INCOMING TRANSACTIONS'FROM TXNHISINNER JOIN CODFIL ON TXNHIS.TXN_COD = CODFIL.COD_CODWHERE CODFIL.COD_TYP = 'I' AND TXN_DAT BETWEEN '01/01/2006' AND '12/13/2006'GROUP BY TXN_DAT ORDER BY TXN_DAT ASC GOSELECT TXNHIS.TXN_DAT AS 'DATE', COUNT (TXN_DAT) AS 'SUM OF DAILY OUTGOING TRANSACTIONS'FROM TXNHISINNER JOIN CODFIL ON TXNHIS.TXN_COD = CODFIL.COD_CODWHERE CODFIL.COD_TYP = 'O' AND TXN_DAT BETWEEN '01/01/2006' AND '12/13/2006'GROUP BY TXN_DAT ORDER BY TXN_DAT ASC GO-----------------------------I am trying to add the other 4 queries as subqueries in the select statement but am failing. here is what i did so far (but the third column gives me the same aggregate total for all of the rows.)SELECT TXN_DAT AS 'TRANSACTION DATE', SUM (TXN_AMT) AS 'TOTAL DAILY AMOUNT', (SELECT TXNHIS.TXN_AMT FROM TXNHIS INNER JOIN CODFIL ON TXNHIS.TXN_COD = CODFIL.COD_COD WHERE CODFIL.COD_TYP = 'I') AS 'DAILY INCOMING AMOUNT'FROM TXNHISWHERE TXN_DAT BETWEEN '01/01/2006' AND '12/31/2006'GROUP BY TXN_DAT, TXN_DAT WITH CUBEORDER BY TXN_DAT ASC GO------------------thanx |
|
CRYSTALM
Starting Member
16 Posts |
Posted - 2007-04-15 : 21:35:41
|
THE WORDS WITH CUBE WERE A MISTAKE. THANX |
|
|
khtan
In (Som, Ni, Yak)
17689 Posts |
Posted - 2007-04-15 : 21:41:12
|
What is the relationship between table TXNHIS and CODFIL ? is it one to one ? KH |
|
|
CRYSTALM
Starting Member
16 Posts |
Posted - 2007-04-15 : 21:43:44
|
TXNHIS IS A TABLE OF BANK ACCOUNT TRANSACTIONS. EACH ROW IN THE TXNHIS HAS A TXN_COD (TRANSACTION CODE) AND THAT CODE IS THE MANY AND THE CODFIL IS THE ONE. |
|
|
CRYSTALM
Starting Member
16 Posts |
Posted - 2007-04-15 : 21:48:10
|
I WANT TO HAVE ALL TOTAL NUMBER OF TRANSACTIONS AND SUMS FOR EACH DAYLIKE DATE TOTAL DAILY MONEY MOVED TOTAL AMOUNT OF DAILY CREDITS TOTAL AMOUNT OF DAILY DEBITS TOTAL NUMBER OF DAILY CREDIT TRANSATIONS TOTAL NUMBER OF DAILY DEBIT TRANSACTIONSAND THE ONLY WAY TO SEGREGATE DEBITS FROM CREDITS IS THEIR CODFIL.COD_TYP EITHER THE COD_TYP IS I FOR INCOING OR O FOR OUTGOING .THANK U SOOOOOOOOOOOOOOOOOOOO MUCH |
|
|
Michael Valentine Jones
Yak DBA Kernel (pronounced Colonel)
7020 Posts |
Posted - 2007-04-15 : 21:57:50
|
Is your Caps Lock key stuck?CODO ERGO SUM |
|
|
CRYSTALM
Starting Member
16 Posts |
Posted - 2007-04-15 : 22:01:28
|
No its not. but thanks for your help |
|
|
khtan
In (Som, Ni, Yak)
17689 Posts |
Posted - 2007-04-15 : 22:02:50
|
[code] SELECT T.TXN_DAT, T.[TOTAL DAILY AMOUNT], T.[SUM OF DAILY TRANSACTIONS], C.[DAILY INCOMING AMOUNT], C.[DAILY OUTGOING AMOUNT], C.[SUM OF DAILY INCOMING TRANSACTIONS], C.[SUM OF DAILY OUTGOING TRANSACTIONS]FROM ( SELECT T.TXN_DAT, SUM (T.TXN_AMT) AS [TOTAL DAILY AMOUNT], COUNT (TXN_DAT) AS [SUM OF DAILY TRANSACTIONS] FROM TXNHIS AS T GROUP BY T.TXN_DAT ) TINNER JOIN ( SELECT T.TXN_DAT, SUM(CASE WHEN C.COD_TYP = 'I' THEN T.TXN_AMT ELSE 0 END) AS [DAILY INCOMING AMOUNT], SUM(CASE WHEN C.COD_TYP = 'O' THEN T.TXN_AMT ELSE 0 END) AS [DAILY OUTGOING AMOUNT], COUNT(CASE WHEN C.COD_TYP = 'I' THEN T.TXN_DAT END) AS [SUM OF DAILY INCOMING TRANSACTIONS] COUNT(CASE WHEN C.COD_TYP = 'O' THEN T.TXN_DAT END) AS [SUM OF DAILY OUTGOING TRANSACTIONS] FROM TXNHIS AS T INNER JOIN CODFIL AS C ON T.TXN_COD = C.COD_COD GROUP BY T.TXN_DAT ) C ON T.TXN_COD = C.COD_CODWHERE T.TXN_DAT BETWEEN '01/01/2006' AND '12/31/2006'ORDER BY T.TXN_DAT ASCGO[/code] KH |
|
|
CRYSTALM
Starting Member
16 Posts |
Posted - 2007-04-15 : 22:02:57
|
i guess i could always run all the scripts tomorrow as i have created them. but i was really trying to get them all into one dataset |
|
|
CRYSTALM
Starting Member
16 Posts |
Posted - 2007-04-15 : 22:04:35
|
thank you khtanI recieved this message. Server: Msg 170, Level 15, State 1, Line 22Line 22: Incorrect syntax near 'COUNT'. |
|
|
khtan
In (Som, Ni, Yak)
17689 Posts |
Posted - 2007-04-15 : 22:07:55
|
add comma after [SUM OF DAILY INCOMING TRANSACTIONS]SELECT T.TXN_DAT, T.[TOTAL DAILY AMOUNT], T.[SUM OF DAILY TRANSACTIONS], C.[DAILY INCOMING AMOUNT], C.[DAILY OUTGOING AMOUNT], C.[SUM OF DAILY INCOMING TRANSACTIONS], C.[SUM OF DAILY OUTGOING TRANSACTIONS]FROM ( SELECT T.TXN_DAT, SUM (T.TXN_AMT) AS [TOTAL DAILY AMOUNT], COUNT (TXN_DAT) AS [SUM OF DAILY TRANSACTIONS] FROM TXNHIS AS T GROUP BY T.TXN_DAT ) TINNER JOIN ( SELECT T.TXN_DAT, SUM(CASE WHEN C.COD_TYP = 'I' THEN T.TXN_AMT ELSE 0 END) AS [DAILY INCOMING AMOUNT], SUM(CASE WHEN C.COD_TYP = 'O' THEN T.TXN_AMT ELSE 0 END) AS [DAILY OUTGOING AMOUNT], COUNT(CASE WHEN C.COD_TYP = 'I' THEN T.TXN_DAT END) AS [SUM OF DAILY INCOMING TRANSACTIONS], COUNT(CASE WHEN C.COD_TYP = 'O' THEN T.TXN_DAT END) AS [SUM OF DAILY OUTGOING TRANSACTIONS] FROM TXNHIS AS T INNER JOIN CODFIL AS C ON T.TXN_COD = C.COD_COD GROUP BY T.TXN_DAT ) C ON T.TXN_COD = C.COD_CODWHERE T.TXN_DAT BETWEEN '01/01/2006' AND '12/31/2006'ORDER BY T.TXN_DAT ASC KH |
|
|
CRYSTALM
Starting Member
16 Posts |
Posted - 2007-04-15 : 22:14:30
|
KH I know my columns exist in my table. But, now I get the following error message:Server: Msg 207, Level 16, State 3, Line 1Invalid column name 'TXN_COD'.Server: Msg 207, Level 16, State 1, Line 1Invalid column name 'COD_COD'. |
|
|
khtan
In (Som, Ni, Yak)
17689 Posts |
Posted - 2007-04-15 : 22:16:55
|
sorry... cut & paste errorSELECT T.TXN_DAT, T.[TOTAL DAILY AMOUNT], T.[SUM OF DAILY TRANSACTIONS], C.[DAILY INCOMING AMOUNT], C.[DAILY OUTGOING AMOUNT], C.[SUM OF DAILY INCOMING TRANSACTIONS], C.[SUM OF DAILY OUTGOING TRANSACTIONS]FROM ( SELECT T.TXN_DAT, SUM (T.TXN_AMT) AS [TOTAL DAILY AMOUNT], COUNT (TXN_DAT) AS [SUM OF DAILY TRANSACTIONS] FROM TXNHIS AS T GROUP BY T.TXN_DAT ) TINNER JOIN ( SELECT T.TXN_DAT, SUM(CASE WHEN C.COD_TYP = 'I' THEN T.TXN_AMT ELSE 0 END) AS [DAILY INCOMING AMOUNT], SUM(CASE WHEN C.COD_TYP = 'O' THEN T.TXN_AMT ELSE 0 END) AS [DAILY OUTGOING AMOUNT], COUNT(CASE WHEN C.COD_TYP = 'I' THEN T.TXN_DAT END) AS [SUM OF DAILY INCOMING TRANSACTIONS], COUNT(CASE WHEN C.COD_TYP = 'O' THEN T.TXN_DAT END) AS [SUM OF DAILY OUTGOING TRANSACTIONS] FROM TXNHIS AS T INNER JOIN CODFIL AS C ON T.TXN_COD = C.COD_COD GROUP BY T.TXN_DAT ) C ON T.TXN_DAT = C.TXN_DATWHERE T.TXN_DAT BETWEEN '01/01/2006' AND '12/31/2006'ORDER BY T.TXN_DAT ASC KH |
|
|
CRYSTALM
Starting Member
16 Posts |
Posted - 2007-04-15 : 22:19:34
|
i was about to say ON T.TXN_COD = C.COD_CODyou named table.table 2 times. I just saw your reply. let me plug it in.thanks |
|
|
CRYSTALM
Starting Member
16 Posts |
Posted - 2007-04-15 : 22:22:42
|
TXNHIS Table has a field for transaction date txnhis.txn_datCODFIL - the transaction code list (primary key for transaction codes) this table does not have a column for dates. |
|
|
CRYSTALM
Starting Member
16 Posts |
Posted - 2007-04-15 : 22:24:59
|
KHI changed this in the query ON T.TXN_COD = C.COD_COD GROUP BY T.TXN_DAT ) C ON T.TXN_COD = C.COD_CODWHERE T.TXN_DAT BETWEEN '01/01/2006' AND '12/31/2006'ORDER BY T.TXN_DAT ASCbut I am receiving this message:Server: Msg 207, Level 16, State 3, Line 1Invalid column name 'TXN_COD'.Server: Msg 207, Level 16, State 1, Line 1Invalid column name 'COD_COD'. |
|
|
khtan
In (Som, Ni, Yak)
17689 Posts |
Posted - 2007-04-15 : 22:28:14
|
[code] ON T.TXN_COD = C.COD_CODGROUP BY T.TXN_DAT) CON T.TXN_COD = C.COD_CODWHERE T.TXN_DAT BETWEEN '01/01/2006' AND '12/31/2006'ORDER BY T.TXN_DAT ASC[/code]The C is the derived table name, it is not referring to CODFIL. Try the last query that i posted KH |
|
|
CRYSTALM
Starting Member
16 Posts |
Posted - 2007-04-15 : 22:37:42
|
KH Thank you soooooo much. If you ever need help with designing graphics. Let me know. Thats what I do. I decided to try learning sql. Is there any book you would recommend? What do u call the method u used to help me? So i can look it up? (embedded statements? sub query?) once again thank you so much. |
|
|
khtan
In (Som, Ni, Yak)
17689 Posts |
Posted - 2007-04-15 : 22:45:19
|
quote: designing graphics
may be you can contribute to this http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=81829quote: Is there any book you would recommend?
There are lots of good book listed here http://www.sqlteam.com/store.asp.quote: What do u call the method u used to help me?
That is call derived table.This is a derived table named T, out of a query. Similarly for the other one C. ( SELECT T.TXN_DAT, SUM (T.TXN_AMT) AS [TOTAL DAILY AMOUNT], COUNT (TXN_DAT) AS [SUM OF DAILY TRANSACTIONS] FROM TXNHIS AS T GROUP BY T.TXN_DAT ) T KH |
|
|
CRYSTALM
Starting Member
16 Posts |
Posted - 2007-04-15 : 23:00:59
|
I was playing with the code you made. I tried making 3 inner joins. I have to keep working at it. SELECT T.TXN_DAT, T.[TOTAL DAILY AMOUNT], T.[SUM OF DAILY TRANSACTIONS], C.[DAILY INCOMING AMOUNT], C.[DAILY OUTGOING AMOUNT], C.[SUM OF DAILY INCOMING TRANSACTIONS], C.[SUM OF DAILY OUTGOING TRANSACTIONS], A.[DAILY INCOMING AMOUNT FOR BUSINESS ACCOUNTS], A.[DAILY OUTGOING AMOUNT FOR BUSINESS ACCOUNTS], A.[SUM OF DAILY INCOMING TRANSACTIONS FOR BUSINESS ACCOUNTS], A.[SUM OF DAILY OUTGOING TRANSACTIONS FOR BUSINESS ACCOUNTS]FROM (( SELECT T.TXN_DAT, SUM (T.TXN_AMT) AS [TOTAL DAILY AMOUNT], COUNT (TXN_DAT) AS [SUM OF DAILY TRANSACTIONS] FROM TXNHIS AS T GROUP BY T.TXN_DAT ) TINNER JOIN ( SELECT T.TXN_DAT, SUM(CASE WHEN C.COD_TYP = 'I' THEN T.TXN_AMT ELSE 0 END) AS [DAILY INCOMING AMOUNT], SUM(CASE WHEN C.COD_TYP = 'O' THEN T.TXN_AMT ELSE 0 END) AS [DAILY OUTGOING AMOUNT], COUNT(CASE WHEN C.COD_TYP = 'I' THEN T.TXN_DAT END) AS [SUM OF DAILY INCOMING TRANSACTIONS], COUNT(CASE WHEN C.COD_TYP = 'O' THEN T.TXN_DAT END) AS [SUM OF DAILY OUTGOING TRANSACTIONS] FROM TXNHIS AS T INNER JOIN CODFIL AS C ON T.TXN_COD = C.COD_COD GROUP BY T.TXN_DAT ) C)INNER JOIN ( SELECT T.TXN_DAT, SUM(CASE WHEN C.COD_TYP = 'I' AND A.ACC_TYP = 'BUS' THEN T.TXN_AMT ELSE 0 END) AS [DAILY INCOMING AMOUNT FOR BUSINESS ACCOUNTS], SUM(CASE WHEN C.COD_TYP = 'O' AND A.ACC_TYP = 'BUS' THEN T.TXN_AMT ELSE 0 END) AS [DAILY OUTGOING AMOUNT FOR BUSINESS ACCOUNTS], COUNT(CASE WHEN C.COD_TYP = 'I' AND A.ACC_TYP = 'BUS' THEN T.TXN_DAT END) AS [SUM OF DAILY INCOMING TRANSACTIONS FOR BUSIENSS ACCOUNTS], COUNT(CASE WHEN C.COD_TYP = 'O' AND A.ACC_TYP = 'BUS' THEN T.TXN_DAT END) AS [SUM OF DAILY OUTGOING TRANSACTIONS FOR BUSINESS ACCOUNTS] FROM TXNHIS AS T INNER JOIN ACCFIL AS A ON T.TXN_ACC = A.ACC_NUM GROUP BY T.TXN_DAT ) A ON T.TXN_DAT = A.TXN_DATWHERE T.TXN_DAT BETWEEN '01/01/2006' AND '12/31/2006'ORDER BY T.TXN_DAT ASC |
|
|
khtan
In (Som, Ni, Yak)
17689 Posts |
Posted - 2007-04-15 : 23:05:33
|
you can just add the INNER JOIN directly to the query. You don't have to create another derived tableSELECT . . . FROM ( <existing 1st query here> ) TINNER JOIN ( <existing 2nd query here> ) C ON T.TXN_DAT = C.TXN_DATINNER JOIN ( <your new query here> ) A ON T.TXN_DAT = A.TXN_DATWHERE T.TXN_DAT BETWEEN '01/01/2006' AND '12/31/2006'ORDER BY T.TXN_DAT ASC KH |
|
|
Previous Page&nsp;
Next Page
|