2015-09-02 2 views
-2

Главная таблицаКак получить ожидаемый результат из таблицы, в SQL Server

PrimaryID | SecondaryID | PrimaryTime | SecondaryTime 
------------------------------------------------------ 
100  | 101   | 10  | 50 
101  | 103   | 20  | 60 
102  | 100   | 30  | 70 
100  | 102   | 40  | 80 

Ожидаемый результат:

ID | Total TIME 
----------------- 
100 | 120 
101 | 70 
102 | 110 
103 | 60 
+2

Я не могу следовать формуле/логике, чтобы достичь Total_time в ожидаемом выходе из вашей основной таблицы. Потратьте время, чтобы объяснить, что именно вы пытаетесь достичь, и вы можете получить более эффективные ответы на свой вопрос. – xQbert

+0

на основе primaryid и secondaryid Мне нужно общее время, например, 100 сум 10 + 70 + 40 – rock

+1

@xQbert: согласовано. Я думаю, что логика заключается в том, что идентификаторы объединяются в один столбец и добавляются соответствующие времена. Например, ID 100 отображается в строках 1 (первичный), 3 (вторичный) и 4 (первичный). Соответствующие времена равны 10, 70 и 40, которые добавляют к 120. –

ответ

2

Здесь мы просто вывести 2 столбца подзапроса из таблицы 4 столбцов, то суммировать значения для каждого вида отдельного первичного или вторичного Id:

CREATE TABLE MainTable (PrimaryID int, SecondaryID int, PrimaryTime int, SecondaryTime int) 
INSERT MainTable VALUES (100,101,10,50), (101,103,20,60), (102,100,30,70), (100,102,40,80) 

;WITH MainCTE AS (
    SELECT PrimaryID ID, PrimaryTime Time FROM MainTable 
    UNION ALL 
    SELECT SecondaryID ID, SecondaryTime Time FROM MainTable 
) 

SELECT ID, SUM(Time) [Total TIME] FROM MainCTE GROUP BY ID 

Это довольно просто, дело было выяснить, что вы просили.

+1

Объяснение может помочь другим. Хотя это, кажется, работает, я не большой поклонник всех ответов SQL. Трюк здесь заключается в создании двух наборов данных, состоящих из Id и времени каждого, и объединения результатов вместе, что позволяет работать с SQL-агрегацией. – xQbert

+0

Спасибо, xQbert, я экспериментировал «все ответы SQL», не повезло, комментарии помогают вам правы (редактирование сделано). – user2955677

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