2016-04-01 4 views
1

Я хочу выбрать еще один столбец с предложением group by с функциями sum или count.выберите новый столбец с группой по пункту

SELECT t1.[09to12PM], t2.[12to15PM], t3.[15to17PM], t4.[17to23PM] 
FROM 
    (SELECT COUNT (Premark) AS [09to12PM] 
    FROM saree_order_stages 
    WHERE Premark LIKE '%ready to go%' AND Premark != 'not ready to go' 
    AND pdate>='2016-03-29 09:00:00' AND Pdate <='2016-03-29 12:00:00') t1, 

    (SELECT COUNT (Premark) AS [12to15PM] 
    FROM saree_order_stages 
    WHERE Premark LIKE '%ready to go%' AND Premark != 'not ready to go' 
    AND pdate>='2016-03-29 12:00:00' AND Pdate <='2016-03-29 15:00:00') t2, 

    (SELECT COUNT (Premark) AS [15to17PM] 
    FROM saree_order_stages 
    WHERE Premark LIKE '%ready to go%' AND Premark != 'not ready to go' 
    AND pdate>='2016-03-29 15:00:00' AND Pdate <='2016-03-29 17:00:00') t3, 

    (SELECT COUNT (Premark) AS [17to23PM] 
    FROM saree_order_stages 
    WHERE Premark LIKE '%ready to go%' AND Premark != 'not ready to go' 
    AND pdate>='2016-03-29 17:00:00' AND Pdate <='2016-03-29 23:00:00') t4 
GROUP BY t1.[09to12PM], t2.[12to15PM], t3.[15to17PM], t4.[17to23PM] 

здесь результат показывает это

09to12PM 12to15PM 15to17PM 17to23PM 
23   21  15  19 

мы хотим добавить одно имя столбца так же, как это. и показаны данные следующим образом.

name 09to12PM 12to15PM 15to17PM 17to23PM 
amit 23   21  15  19 
sumit 11   22  11  45 
raj 14   4   5   67 
+1

откуда 'name' придет? –

+0

является частью полей таблицы и должен быть придет 1-й столбец в соответствии с таблицей dispaly –

ответ

1

Вы могли бы упростить запрос с использованием условной агрегации:

SELECT 
    name, 
    [09to12PM] = SUM(CASE WHEN pdate>='2016-03-29 09:00:00' AND Pdate <='2016-03-29 12:00:00' THEN 1 ELSE 0 END), 
    [12to15PM] = SUM(CASE WHEN pdate>='2016-03-29 12:00:00' AND Pdate <='2016-03-29 15:00:00' THEN 1 ELSE 0 END), 
    [15to17PM] = SUM(CASE WHEN pdate>='2016-03-29 15:00:00' AND Pdate <='2016-03-29 17:00:00' THEN 1 ELSE 0 END), 
    [17to23PM] = SUM(CASE WHEN pdate>='2016-03-29 17:00:00' AND Pdate <='2016-03-29 23:00:00' THEN 1 ELSE 0 END) 
FROM saree_order_stages 
WHERE 
    Premark LIKE '%ready to go%' 
    AND Premark != 'not ready to go' 
    AND CAST(pdate AS DATE) = '2016-03-29' 
GROUP BY name 
+0

хорошо, благодаря решению моей проблемы –

+0

Рад помочь! Не стесняйтесь принять мой ответ, если вы считаете, что это было полезно для вас. :-) –

+0

большое спасибо Felix Pamittan –