[英]Joining two tables and while pivoting sql server 2008
I have two tables like so 我有两张桌子
Table1 表格1
SegmentNo PassingPotencies
1 8
2 10
Table2 表2
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.
如果表1中的Passingpotencies不等于10,那么该段失败,反之亦然。 The final result should look something like this
最终结果应该是这样的
TableResult TableResult
BatchAvg Total TotalSegments TotalPassed Segment1 Segment2
106.22 20 2 18 Fail Pass
Any help is greatly appreciated. 任何帮助是极大的赞赏。 Thanks.
谢谢。
With your current design, this is what you can achieve (something closest). 根据您当前的设计,这是您可以实现的(最接近的)。
See a demo here http://sqlfiddle.com/#!3/e86f5/5 请参阅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 以上查询将导致
This will work in your actual scenario. 这将适用于您的实际场景。 See a Demo here: SQLFiddle
在这里看一个Demo: 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:
它是某种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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.