2012-02-21 8 views
1

Я хотел бы создать представление из следующей таблицы. В этой таблице содержится много записей, и моя цель состоит в том, чтобы иметь определенные TOTALS (суммы) для столбцов A и столбца B, но на основе разных предложений WHERE. В настоящее время я создал два отдельных представления, чтобы отслеживать суммы, которые мне нужны.Создание VIEW в mysql

Вопрос в том, могу ли я сделать это в одном представлении, а не в двух отдельных видах.

ТАБЛИЦА: USERID ВРЕМЯ Столбец A Столбец B

Я хочу, чтобы следить из следующих двух сумм:

ВСЕГО 1: ВЫБОР USERID, СУММА (ВРЕМЯ) из таблицы, где колонка А <> 0
ИТОГО 2: ВЫБОР USERID, SUM (TIME) из таблицы, где COLUMN B <> 0

есть ли способ, чтобы получить эти 2 суммы в одном запросе?

ответ

2
SELECT USERID, 
     SUM(CASE WHEN COLUMN_A<>0 THEN TIME ELSE 0 END) AS ColumnASum, 
     SUM(CASE WHEN COLUMN_B<>0 THEN TIME ELSE 0 END) AS ColumnBSum 
    FROM TABLE 
    GROUP BY USERID 
+0

Это отличная информация. Мне не было известно о создании таких запросов! Спасибо. – flukyspore

0

Представления в MySQL не могут содержать несколько запросов, но это не похоже на то, что вам обязательно нужно представление. Почему не просто делать

SELECT USERID, SUM(TIME) FROM TABLE WHERE COLUMN A <> 0 
UNION 
SELECT USERID, SUM(TIME) FROM TABLE WHERE COLUMN B <> 0 

Это не дает вам то, что вам нужно?

+0

союз, кажется, не работает в моем случае, потому что только один заголовок столбца будет создан для времени (и мне нужны два отдельных итоги времени. – flukyspore

+0

вы, вероятно, присоединиться к тем, два запроса в этом случае на .USERID = B.USERID, но похоже, что решение, отправленное Джо, делает то, что вам нужно, а также –

+0

True! Спасибо за 2 цента! – flukyspore