Abe
Abe

Reputation: 1929

Joining two tables and while pivoting sql server 2008

I have two tables like so

Table1

SegmentNo  PassingPotencies
1           8
2           10

Table2

BatchAvg     Total   TotalSegments  TotalPassed
106.22        20          2            18

I want to join two tables with a simple login. If the Passingpotencies in table 1 is not equal to 10 then the segment is failed and vice versa. The final result should look something like this

TableResult

BatchAvg     Total     TotalSegments     TotalPassed     Segment1     Segment2
106.22         20           2               18              Fail        Pass

Any help is greatly appreciated. Thanks.

Upvotes: 0

Views: 62

Answers (2)

fnightangel
fnightangel

Reputation: 426

This will work in your actual scenario. See a Demo here: SQLFiddle

First, join both tables:

SELECT 
    T2.BATCHAVG
,   T2.TOTAL
,   T2.TOTALSEGMENTS
,   T2.TOTALPASSED
,   T1.SEGMENTNO
,   (CASE WHEN T1.PASSINGPOTENCIES >= 10 THEN 'PASSED' ELSE 'FAILED' END)   AS SEGMENT
INTO TABLE3
FROM TABLE1 T1
CROSS JOIN TABLE2 T2

Then, select this table like this. It's some kind of PIVOT:

SELECT 
    T.BATCHAVG
,   T.TOTAL
,   T.TOTALSEGMENTS
,   T.TOTALPASSED
,   MAX(T.SEGMENT1)     AS SEGMENT1
,   MAX(T.SEGMENT2)     AS SEGMENT2
FROM (
SELECT 
    T1.BATCHAVG
,   T1.TOTAL
,   T1.TOTALSEGMENTS
,   T1.TOTALPASSED
,   (CASE WHEN T1.SEGMENTNO = '1' THEN T1.SEGMENT END) AS SEGMENT1
,   (CASE WHEN T1.SEGMENTNO = '2' THEN T1.SEGMENT END) AS SEGMENT2
FROM TABLE3 T1
) T
GROUP BY
    T.BATCHAVG
,   T.TOTAL
,   T.TOTALSEGMENTS
,   T.TOTALPASSED

Upvotes: 1

Rahul
Rahul

Reputation: 77934

With your current design, this is what you can achieve (something closest).

See a demo here http://sqlfiddle.com/#!3/e86f5/5

select distinct BATCHAVG,
TOTAL,
TOTALSEGMENTS,
TOTALPASSED,
SegmentNo,
case when PASSINGPOTENCIES <> 10 then 'Failed'
else 'Passed' end as SegmentStatus
from
(
select * from table2,table1
 ) X

Above query will results in

enter image description here

Upvotes: 1

Related Questions