简体   繁体   English

加入两个表,同时转动sql server 2008

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM