По-долу е за BigQuery!
Моля, обърнете внимание:вашите очаквания относно имената на изходните колони не са правилни!
Името на колоната не може да започва с цифра - така че в примера по-долу - ще използвам id_1, id_2 и id_3 вместо 1, 2 и 3
SELECT
SUM(CASE WHEN id = 1 THEN 1 END) AS id_1,
SUM(CASE WHEN id = 2 THEN 1 END) AS id_2,
SUM(CASE WHEN id = 3 THEN 1 END) AS id_3
FROM YourTable
Примерът по-горе предполага, че знаете предварително вашите идентификационни номера и има много малко от тях, така че не е голяма работа да напишете ръчно няколко броя реда със SUM(...) за всеки идентификатор
Ако това не е така - можете първо да генерирате по-горе заявка програмно, като изпълните под заявка
SELECT 'SELECT ' +
GROUP_CONCAT_UNQUOTED(
'SUM(CASE WHEN id = ' + STRING(id) + ' THEN 1 END) AS id_' + STRING(id)
)
+ ' FROM YourTable'
FROM (
SELECT id FROM (
SELECT * FROM YourTable GROUP BY id ORDER BY id
)
като резултат - ще получите низ като по-долу
SELECT SUM(CASE WHEN id = 1 THEN 1 END) AS id_1,SUM(CASE WHEN id = 2 THEN 1 END) AS id_2,SUM(CASE WHEN id = 3 THEN 1 END) AS id_3 FROM YourTable
Така че сега просто го копирайте и поставете в редактора на заявки и го стартирайте
можете да видите подобен пример тук - https://stackoverflow.com/a/36623258/5221944