2013-03-15 6 views
0

Я делаю запрос на Data Explorer:Как умножить 2 столбца?

SELECT 
    Name, 
    COUNT(*) Qty, 
    Points = CASE Name 
    WHEN 'Altruist' THEN 5 
    WHEN 'Analytical' THEN 5 
    WHEN 'Announcer' THEN 5 
    WHEN 'Autobiographer' THEN 5 
    WHEN 'Benefactor' THEN 5 
    WHEN 'Caucus' THEN 5 
    WHEN 'Citizen Patrol' THEN 5 
    WHEN 'Cleanup' THEN 5 
    WHEN 'Commentator' THEN 5 
    WHEN 'Critic' THEN 5 
    WHEN 'Custodian' THEN 5 
    WHEN 'Disciplined' THEN 5 
    WHEN 'Editor' THEN 5 
    WHEN 'Excavator' THEN 5 
    WHEN 'Informed' THEN 5 
    WHEN 'Investor' THEN 5 
    WHEN 'Mortarboard' THEN 5 
    WHEN 'Nice Answer' THEN 5 
    WHEN 'Nice Question' THEN 5 
    WHEN 'Organizer' THEN 5 
    WHEN 'Peer Pressure' THEN 5 
    WHEN 'Popular Question' THEN 5 
    WHEN 'Precognitive' THEN 5 
    WHEN 'Promotor' THEN 5 
    WHEN 'Proofreader' THEN 5 
    WHEN 'Quorum' THEN 5 
    WHEN 'Revival' THEN 5 
    WHEN 'Scholar' THEN 5 
    WHEN 'Self-Learner' THEN 5 
    WHEN 'Student' THEN 5 
    WHEN 'Suffrage' THEN 5 
    WHEN 'Supporter' THEN 5 
    WHEN 'Synonymizer' THEN 5 
    WHEN 'Tag Editor' THEN 5 
    WHEN 'Talkative' THEN 5 
    WHEN 'Teacher' THEN 5 
    WHEN 'Tumbleweed' THEN 5 
    WHEN 'Vox Populi' THEN 5 
    WHEN 'Archaeologist' THEN 10 
    WHEN 'Beta' THEN 10 
    WHEN 'Booster' THEN 10 
    WHEN 'Civic Duty' THEN 10 
    WHEN 'Constituent' THEN 10 
    WHEN 'Convention' THEN 10 
    WHEN 'Deputy' THEN 10 
    WHEN 'Enlightened' THEN 10 
    WHEN 'Enthusiast' THEN 10 
    WHEN 'Epic' THEN 10 
    WHEN 'Favorite Question' THEN 10 
    WHEN 'Generalist' THEN 10 
    WHEN 'Good Answer' THEN 10 
    WHEN 'Good Question' THEN 10 
    WHEN 'Guru' THEN 10 
    WHEN 'Necromancer' THEN 10 
    WHEN 'Notable Question' THEN 10 
    WHEN 'Outspoken' THEN 10 
    WHEN 'Pundit' THEN 10 
    WHEN 'Research Assistant' THEN 10 
    WHEN 'Reviewer' THEN 10 
    WHEN 'Sportsmanship' THEN 10 
    WHEN 'Strunk & White' THEN 10 
    WHEN 'Taxonomist' THEN 10 
    WHEN 'Tenacious' THEN 10 
    WHEN 'Yearling' THEN 10 
    WHEN 'Copy Editor' THEN 20 
    WHEN 'Electorate' THEN 20 
    WHEN 'Famous Question' THEN 20 
    WHEN 'Fanatic' THEN 20 
    WHEN 'Great Answer' THEN 20 
    WHEN 'Great Question' THEN 20 
    WHEN 'Legendary' THEN 20 
    WHEN 'Marshal' THEN 20 
    WHEN 'Populist' THEN 20 
    WHEN 'Publicist' THEN 20 
    WHEN 'Reversal' THEN 20 
    WHEN 'Stellar Question' THEN 20 
    WHEN 'Steward' THEN 20 
    WHEN 'Unsung Hero' THEN 20 
    ELSE 0 
    END, 
    Qty * Points AS Total 
FROM Badges 
WHERE UserId = 1563422 
GROUP BY Name 
ORDER BY COUNT(*) DESC 

Это все работает, когда , Qty * Points AS Total добавляется, кроме (считать, что от запроса выше run the query успешно).

Ошибки я получаю:

Неверное имя столбца 'Qty'.

Недопустимое название столбца 'Points'.

Как я могу умножить Qty и Points как Total?

ответ

1

Используйте подзапрос, или КТР так:

WITH CTE 
AS 
(
    SELECT 
    Name, 
    COUNT(*) Qty, 
    Points = CASE Name 
     WHEN 'Altruist' THEN 5 
     WHEN 'Analytical' THEN 5 
     WHEN 'Announcer' THEN 5 
     WHEN 'Autobiographer' THEN 5 
     WHEN 'Benefactor' THEN 5 
     WHEN 'Caucus' THEN 5 
     WHEN 'Citizen Patrol' THEN 5 
     WHEN 'Cleanup' THEN 5 
     WHEN 'Commentator' THEN 5 
     WHEN 'Critic' THEN 5 
     WHEN 'Custodian' THEN 5 
     WHEN 'Disciplined' THEN 5 
     WHEN 'Editor' THEN 5 
     WHEN 'Excavator' THEN 5 
     WHEN 'Informed' THEN 5 
     WHEN 'Investor' THEN 5 
     WHEN 'Mortarboard' THEN 5 
     WHEN 'Nice Answer' THEN 5 
     WHEN 'Nice Question' THEN 5 
     WHEN 'Organizer' THEN 5 
     WHEN 'Peer Pressure' THEN 5 
     WHEN 'Popular Question' THEN 5 
     WHEN 'Precognitive' THEN 5 
     WHEN 'Promotor' THEN 5 
     WHEN 'Proofreader' THEN 5 
     WHEN 'Quorum' THEN 5 
     WHEN 'Revival' THEN 5 
     WHEN 'Scholar' THEN 5 
     WHEN 'Self-Learner' THEN 5 
     WHEN 'Student' THEN 5 
     WHEN 'Suffrage' THEN 5 
     WHEN 'Supporter' THEN 5 
     WHEN 'Synonymizer' THEN 5 
     WHEN 'Tag Editor' THEN 5 
     WHEN 'Talkative' THEN 5 
     WHEN 'Teacher' THEN 5 
     WHEN 'Tumbleweed' THEN 5 
     WHEN 'Vox Populi' THEN 5 
     WHEN 'Archaeologist' THEN 10 
     WHEN 'Beta' THEN 10 
     WHEN 'Booster' THEN 10 
     WHEN 'Civic Duty' THEN 10 
     WHEN 'Constituent' THEN 10 
     WHEN 'Convention' THEN 10 
     WHEN 'Deputy' THEN 10 
     WHEN 'Enlightened' THEN 10 
     WHEN 'Enthusiast' THEN 10 
     WHEN 'Epic' THEN 10 
     WHEN 'Favorite Question' THEN 10 
     WHEN 'Generalist' THEN 10 
     WHEN 'Good Answer' THEN 10 
     WHEN 'Good Question' THEN 10 
     WHEN 'Guru' THEN 10 
     WHEN 'Necromancer' THEN 10 
     WHEN 'Notable Question' THEN 10 
     WHEN 'Outspoken' THEN 10 
     WHEN 'Pundit' THEN 10 
     WHEN 'Research Assistant' THEN 10 
     WHEN 'Reviewer' THEN 10 
     WHEN 'Sportsmanship' THEN 10 
     WHEN 'Strunk & White' THEN 10 
     WHEN 'Taxonomist' THEN 10 
     WHEN 'Tenacious' THEN 10 
     WHEN 'Yearling' THEN 10 
     WHEN 'Copy Editor' THEN 20 
     WHEN 'Electorate' THEN 20 
     WHEN 'Famous Question' THEN 20 
     WHEN 'Fanatic' THEN 20 
     WHEN 'Great Answer' THEN 20 
     WHEN 'Great Question' THEN 20 
     WHEN 'Legendary' THEN 20 
     WHEN 'Marshal' THEN 20 
     WHEN 'Populist' THEN 20 
     WHEN 'Publicist' THEN 20 
     WHEN 'Reversal' THEN 20 
     WHEN 'Stellar Question' THEN 20 
     WHEN 'Steward' THEN 20 
     WHEN 'Unsung Hero' THEN 20 
     ELSE 0 
    END 
    FROM Badges 
    WHERE UserId = 1563422 
    GROUP BY Name 
) 
    SELECT *, QTY * Points AS Total 
    FROM CTE; 

Updated Demo on Data Explorer

+0

отлично работает, спасибо большое Махмудом !! –

+0

@ DannyBeckett - Добро пожаловать в любое время :) –

+0

... Не думаю, что вы знаете, как получить «GrandTotal»? http://chat.stackoverflow.com/rooms/26206/room-for-danny-beckett-and-mahmoud-gamal –

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