2015-04-28 3 views
2

UPDATE !!!!Группа по диапазонам SQL Server

У меня есть следующий SQL запрос, построенный с соответствующим выходом:

enter image description here

enter image description here

Я хотел бы эффективно добавлять метки к каждому из агрегатов, как показано ниже:

coupon percent | income level 
----------------------------------- 
.023434355  | 0-20000 
.054888999  | 20000-35000 
.010000002  | 35000-100000 

Любые предложения?

ответ

3

Вы можете добавить CASE заявление к вашему GROUP BY что-то вроде

GROUP BY CASE 
    WHEN storeAvgIncome <= 20000 THEN '0-20000' 
    WHEN storeAvgIncome > 20000 AND storeAvgIncome <= 35000 THEN '20000-35000' 
    WHEN storeAvgIncome > 35000 AND storeAvgIncome <= 100000 THEN '35000-100000' 
    END 

Затем добавьте же к вашему SELECT

SELECT 
    CASE 
     WHEN storeAvgIncome <= 20000 THEN '0-20000' 
     WHEN storeAvgIncome > 20000 AND storeAvgIncome <= 35000 THEN '20000-35000' 
     WHEN storeAvgIncome > 35000 AND storeAvgIncome <= 100000 THEN '35000-100000' 
     END AS [income level] 
+0

Сноска: Вы можете сделать это, пока ваш сазе [не делает содержат агрегированную функцию] (http://stackoverflow.com/q/1208854/477563). –

+0

Я действительно получил немного дальше, прежде чем увидел ваш ответ. Теперь, когда у меня есть диапазоны, установленные в заявлении case, как мне получить фактические диапазоны, чтобы они отображались как эффективные ярлыки строк, как описано выше? Я не могу просто добавить 'dimStore.storeAvgIncome' в оператор select, так как я могу получить аргумент case, а затем значения, отображаемые для соответствующих строк? – 92twinturboz

+0

См. Редактирование на мой ответ – ChrisStillwell

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