Превратить строки в столбцы в SQL Server неправильный результат - PullRequest
0 голосов
/ 10 января 2019

У меня есть таблица:

ID  platform
1   IOS
2   Android
3   Windows
4   IOS
5   IOS
6   IOS
7   IOS
8   Windows
9   Windows
10  Android

Я хочу получить для платформы = 'Android' и платформы = 'IOS' количество появлений. Это я сделал:

select  top 2  platform, max(platformNumber) as count
from(
select ROW_NUMBER() over (partition by platform order by platform ) as platformNumber, B.* from B) temp 
group by platform

Результат, который я получаю:

platform count
Android 2
IOS 5

Теперь я хочу иметь возможность преобразовать столбцы, чтобы показать:

IOS Android 
5     2

Для этого я попробовал этот скрипт:

select platform,  'platform' + cast(ROW_NUMBER() over (partition by platform order by platform ) as varchar(10)) columnsqu
from
(
select  top 2  platform, max(platformNumber) as count
from(
select ROW_NUMBER() over (partition by platform order by platform ) as platformNumber, B.* from B) temp 
group by platform) Temp2
PIVOT
(
MAX(count) FOR columnsqu IN (IOS,Android)
)PIV

Я получаю ошибку ...

1 Ответ

0 голосов
/ 10 января 2019

Я думаю, вам нужен сводный запрос:

SELECT
    COUNT(CASE WHEN platform = 'IOS' THEN 1 END) AS IOS,
    COUNT(CASE WHEN platform = 'Android' THEN 1 END) AS Android
FROM B
WHERE
    platform IN ('IOS', 'Android')
GROUP BY
    platform;
...