Solved

Sql statment

Posted on 2012-03-11
7
251 Views
Last Modified: 2012-03-15
Hi, May I get your help?
Table1
VoucherID       EntryID          Project      Expenses     Dept
123                   1                     A01           Travel          Null
123                   1                     Null          Null              Fin
Table2
VoucherID      EntryID      Amount
123                   1                100

How can I create a view as follows:
 VoucherID       EntryID    Amount  Project  Expenses Dept
123                     1               100         A01       Travel      Fin

Thanks
Becky
0
Comment
Question by:beckyng
7 Comments
 
LVL 11

Expert Comment

by:SANDY_SK
ID: 37708452
Here is the query,

select t1.voucherId,t1.EntryId,t1.Project,t3.Amount,t1.Expenses,t2.Dept from table1 as t1 
JOIN  table1 t2 on t1.voucherId = t2.voucherId
AND t1.EntryId = t2.EntryId
AND t1.Project=t2.Project
AND t1.Expenses IS NOT NULL AND t2.Dept IS NOT NULL
INNER JOIN Table2 t3 ON t2.voucherId=t3.VoucherId

Open in new window


see if it helps
0
 

Author Comment

by:beckyng
ID: 37708471
sorry, no result
0
 
LVL 9

Expert Comment

by:suvmitra
ID: 37708482
CREATE VIEW MyView AS
select tbl1.VoucherID, tbl1.EntryID, tbl2.Amount, tbl1.Project, tbl1.Expenses, tbl1.Dept
from tbl1
left join tbl2
on tbl1.VoucherID = tbl2.VoucherID
where tbl1.Dept is null;

CREATE VIEW MyView2 AS
select tbl1.VoucherID, tbl1.EntryID, tbl2.Amount, tbl1.Project, tbl1.Expenses, tbl1.Dept
from tbl1
left join tbl2
on tbl1.VoucherID = tbl2.VoucherID
where tbl1.Dept is not null;

select MyView.VoucherID, MyView.EntryID, MyView2.Amount, MyView.Project, MyView.Expenses, MyView2.Dept
from MyView
left join MyView2
on MyView.VoucherID = MyView2.VoucherID;
0
Zoho SalesIQ

Hassle-free live chat software re-imagined for business growth. 2 users, always free.

 
LVL 11

Expert Comment

by:SANDY_SK
ID: 37708574
just remove the project comparison....

like this

select t1.voucherId,t1.EntryId,t1.Project,t3.Amount,t1.Expenses,t2.Dept from table1 as t1 
JOIN  table1 t2 on t1.voucherId = t2.voucherId
AND t1.EntryId = t2.EntryId
AND t1.Expenses IS NOT NULL AND t2.Dept IS NOT NULL
INNER JOIN Table2 t3 ON t2.voucherId=t3.VoucherId

Open in new window

0
 
LVL 32

Accepted Solution

by:
ewangoya earned 500 total points
ID: 37708592
try this

select A.VoucherID, A.EntryID, Amount,  Project,  Expenses, Dept
from (select VoucherID, Max(EntryID) EntryID, Max(Project)Project, Max(Expenses) Expenses, Max(Dept) Dept
      from Table1
      group by VoucherID) A
left join (select VoucherID, MAX(EntryID) EntryID, MAX(Amount) Amount 
			from Table2
			group by VoucherID) B on A.VoucherID = B.VoucherID

Open in new window

0
 
LVL 1

Expert Comment

by:tomHamill
ID: 37709614
It's hard to answer this without knowing more about what else might be in these fields and how else you might need to select data from them.

With just your three rows of sample data, a fairly simple "GROUP BY" query should work.

SELECT
  Table1.VoucherID, Table1.EntryID, Table2.Amount, Max(Table1.Project) AS Project, Max(Table1.Expenses) AS Expense, Max(Table1.Dept) As Dept
FROM
  Table1 INNER JOIN Table2 ON
    Table1.VoucherID = Table2.VoucherID AND
    Table1.EntryID = Table2.EntryID
GROUP BY
  Table1.VoucherID, Table1.EntryID, Table2.Amount

BUT THIS ASSUMES that there is never more than 1 record in Table1 where Project (or Expenses... or Dept) is not null.  That doesn't seem very realistic to me - but you know best.

What do you want to see if your Table1 data is more like this:

VoucherID       EntryID          Project      Expenses     Dept
123                   1                     A01           Travel          Null
123                   1                     Null          Null              Fin
123                   1                     Null          Meals           MIS

With my query the results would be Expenses = Travel and Dept = MIS.  Is that acceptable?
0
 
LVL 9

Expert Comment

by:suvmitra
ID: 37727802
Since my way is also resulting the recordset you wanted and you wanted a VIEW right?... can you clarify of not considering mine? Thanks.
0

Featured Post

Zoho SalesIQ

Hassle-free live chat software re-imagined for business growth. 2 users, always free.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

In this article I will describe the Copy Database Wizard method as one possible migration process and I will add the extra tasks needed for an upgrade when and where is applied so it will cover all.
In this article we will get to know that how can we recover deleted data if it happens accidently. We really can recover deleted rows if we know the time when data is deleted by using the transaction log.
Viewers will learn how to use the INSERT statement to insert data into their tables. It will also introduce the NULL statement, to show them what happens when no value is giving for any given column.
Viewers will learn how to use the SELECT statement in SQL and will be exposed to the many uses the SELECT statement has.

867 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

22 Experts available now in Live!

Get 1:1 Help Now