2015-04-12 3 views
0

Из моего предыдущего вопроса мне удалось заставить работу работать с Microsoft SQL Server и импортировать файл excel в новую базу данных. Теперь мой вопрос заключается в написании правильных команд sql. Я пытаюсь суммировать один и тот же столбец таблицы дважды с использованием разных критериев, а затем вводить эти числа в другую таблицу. Я знаю, как вставить сумму в таблицу, но мне интересно, как я могу вставить две суммы, которые поступают из одного и того же столбца одновременно (поскольку каждый раз, когда я вставляю, создается новая строка) в ту же строку таблицы.Вставка результатов двух сумм вместе в таблицу

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

Некоторые образцы данных:

DeptID  Department 
15   Eng 
16   Eng 
17   Mkt 
18   Mkt 


| Person | DeptID | Type | Number | 
+--------+------------+------+---------+ 
| A |  15  | p1 | 1  | 
| B |  18  | p2 | 5  | 
| C |  16  | p2 | 10 | 
| D |  17  | p1 | 7  | 
| E |  18  | p1 | 11 | 
| F |  16  | p2 | 12 | 

Так что результат я должен дать как таковой:

| Department | Sum of p1 | Sum of p2 | 
+------------+------------+-----------+ 
|  Eng |  1  |  22 | 
|  Mkt |  18  |  5  | 

То, что я попытался это следующим образом:

select sum(Amount) as engsump1 from Sheet1$ 
where Department = 'Eng' and Type = 'p1' 

select sum(Amount) as engsump2 from Sheet1$ 
where Department = 'Eng' and Type = 'p2' 

select sum(Amount) as mktsump1 from Sheet1$ 
where Department = 'Mkt' and Type = 'p1' 

select sum(Amount) as mktsump2 from Sheet1$ 
where Department = 'Mkt' and Type = 'p2' 

Выполнить это один раз и после того, как я вижу результаты, выполните вставку в функцию. Мне просто интересно, смогу ли я сделать эти два шага за один шаг.

+1

Нечеткие данные, предоставленные образцы данных, что вы пробовали? –

+0

только что добавил данные образца. дайте мне знать, если что-то еще добавить. – mystery578

ответ

1

Чтобы суммировать столбец «число» в каждой группе, вы можете использовать функцию SUM(); Просто поставьте там аргумент case, чтобы вы могли суммировать случаи, когда тип p1, и суммировать случаи, когда type - p2.

Чтобы разделить отделы, просто используйте предложение GROUP BY. Попробуйте следующее:

SELECT department, 
    SUM(CASE WHEN type = 'p1' THEN number ELSE 0 END) AS totalP1, 
    SUM(CASE WHEN type = 'p2' THEN number ELSE 0 END) AS totalP2 
FROM myTable 
GROUP BY department; 

Пример: SQL Fiddle.

+0

спасибо! это действительно полезно! ok, боковая точка, есть ли функция в sql, где я могу узнать, попадает ли дата (записанная как DD/MM/YYYY) в определенный день недели (например, что 13/13/2015 - понедельник)? – mystery578

+0

просто добавил новое расширение вопроса. – mystery578

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