2014-10-02 4 views
-4

У меня есть таблицаspliting один столбец трех столбцов в SQL

name  test  count 
---------------------------- 
sam  test1  10 
sam  test2   2 
sam  passcount  5 
riz  test4   3 
riz  test5   4 
riz  passxount  6 

Я хочу, чтобы отобразить результат

name    test    pass count   fail count     total count 
------------------------------------------------------------------- 
sam    test1     7     10        17 
sam    test2    15      2        17 
riz    test 4    10      3 
riz    test 5    9      4         13 
+3

И что такое * логика * за этим? Как первая таблица преобразуется в результат? Учитывая 'name = 'sam'' и' test =' test1'' - как вы узнаете «счетчик проходов» или «счет неудачи»? Вам нужно предоставить гораздо больше информации - не просто кучу строк данных! –

+2

В чем заключается _magic_, чтобы придумать значения для нового столбца? – melancia

ответ

0

Хорошо Потребовалось немного времени, чтобы понять, что заголовки столбцов были немного missleading

/** 
    pass = total for name minus that for current test 
    fail = total count for that test in src table 
    total = total count for that name 
*/ 

select 
    t1.name, 
    t1.test, 
    t2.total-t1.count as pass_count, 
    t1.count as fail_count, 
    t2.total as total_count 
from Kamrams_table as t1 
inner join 
    (
    select 
     k1.name, 
     sum(k1.count) as total 
    from Kamrams_table as k1 
    group by k1.name 
    ) as t2 
on t1.name = t2.name 
; 

Примечания: Я считаю, что дополнительное пространство между test4 и испытанием 5 в Выходной стол был опечаткой? Существуют и другие конструкции, которые были бы полезны: CTE и функции окон.

Смежные вопросы