Показать строку другой таблицы в виде столбца текущей таблицы - PullRequest
0 голосов
/ 06 сентября 2018

Рассмотрим две таблицы: Таблица 1:

**Result          Total**
Pass             102
Fail              3
Undetermined      1

Таблица 2:

**Pass%   Fail%   Undetermined%**   
  96.23   2.83    0.94  

Необходимый результат:

**Result     Total  Percentage**
Pass          102       96.23
Fail           3        2.83
Undetermined   1        0.94

Как преобразовать строки таблицы 2 в столбец таблицы 1 для получения результата?

1 Ответ

0 голосов
/ 06 сентября 2018

сначала, вы можете попробовать unpivot на Table2, затем JOIN с Table1.

Ваша sql-server версия 2008 года, вы можете использовать unpivot на UNION ALL.

CREATE TABLE T1(
  Result  VARCHAR(50),
  Total int
);
CREATE TABLE T2(
  Pass  FLOAT,
  Fail FLOAT,
  Undetermined FLOAT
);

insert into T2 VALUES (96.23,2.83,0.94)



INSERT INTO T1 VALUES ('Pass',102);
INSERT INTO T1 VALUES ('Fail',3);
INSERT INTO T1 VALUES ('Undetermined',1);

Запрос 1 :

SELECT t1.*,s.val
FROM ( 
  SELECT Pass val,'PASS' Name
  FROM T2 
  UNION ALL
  SELECT Fail val,'Fail' Name
  FROM T2 
  UNION ALL
  SELECT Undetermined val,'Undetermined' Name
  FROM T2 
) s inner join T1 t1 on t1.Result = s.Name

Результаты

|       Result | Total |   val |
|--------------|-------|-------|
|         Pass |   102 | 96.23 |
|         Fail |     3 |  2.83 |
| Undetermined |     1 |  0.94 |

Если вы можете использовать CROSS APPLY с VALUE, вы можете попробовать это.

Запрос

SELECT t1.*,s.val
FROM (
  SELECT v.* FROM T2 
  CROSS APPLY(VALUES 
       (Pass,'PASS'),
       (Fail,'Fail'),
       (Undetermined,'Undetermined')
  ) v(val,Name)
) s inner join T1 t1 on t1.Result = s.Name

Результаты

|       Result | Total |   val |
|--------------|-------|-------|
|         Pass |   102 | 96.23 |
|         Fail |     3 |  2.83 |
| Undetermined |     1 |  0.94 |
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...