Solved

Sql statment

Posted on 2012-03-11
7
249 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
Enabling OSINT in Activity Based Intelligence

Activity based intelligence (ABI) requires access to all available sources of data. Recorded Future allows analysts to observe structured data on the open, deep, and dark web.

 
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

Threat Intelligence Starter Resources

Integrating threat intelligence can be challenging, and not all companies are ready. These resources can help you build awareness and prepare for defense.

Join & Write a Comment

Suggested Solutions

In this article I will describe the Backup & Restore 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.
Entering time in Microsoft Access can be difficult. An input mask often bothers users more than helping them and won't catch all typing errors. This article shows how to create a textbox for 24-hour time input with full validation politely catching …
This video shows, step by step, how to configure Oracle Heterogeneous Services via the Generic Gateway Agent in order to make a connection from an Oracle session and access a remote SQL Server database table.
This is Part 3 in a 3-part series on Experts Exchange to discuss error handling in VBA code written for Excel. Part 1 of this series discussed basic error handling code using VBA. http://www.experts-exchange.com/videos/1478/Excel-Error-Handlin…

743 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

11 Experts available now in Live!

Get 1:1 Help Now