Есть ли простой способ выбрать из (длинного) массива? Я хочу что-то вроде этого
SELECT citizenship, count(1)
FROM table
WHERE year(date) = 2018
GROUP BY citizenship
Но я хочу, чтобы все гражданство было в виде столбца, а все даты (с 2000 по 2018 год) в виде строк, чтобы я мог удалить предложение where.
добавьте образец данных вашего массива .. (по крайней мере)


Добавление отчетливый даст вам список уникальных граждан
SELECT distinct citizenship
FROM table
WHERE year(date) >= 2000 and year(date) <= 2018
Похоже, вы хотите использовать столбцы PIVOT.
Вот, что я думаю, вы хотите ... (в SQL Server) См. Эту статью: https://www.databasejournal.com/features/mssql/converting-rows-to-columns-pivot-and-columns-to-rows-unpivot-in-sql-server.html
Применительно к вам это могло быть ...
--Declare necessary variables
DECLARE @SQLQuery AS NVARCHAR(MAX)
DECLARE @PivotColumns AS NVARCHAR(MAX)
--Get unique values of pivot column
SELECT @PivotColumns= COALESCE(@PivotColumns + ',','') + QUOTENAME([citizenship])
FROM (SELECT DISTINCT [citizenship] FROM [dbo].[table]) AS PivotExample
--Create the dynamic query with all the values for
--pivot column at runtime
SET @SQLQuery =
N'SELECT [Year], ' + @PivotColumns + '
FROM (SELECT [citizenship], YEAR([Date]) AS [Year], COUNT(1) As Counter
FROM [Table] GROUP BY [citizenship], YEAR([Date])) AS A
PIVOT( SUM(Counter)
FOR [citizenship] IN (' + @PivotColumns + ')) AS P'
SELECT @SQLQuery
--Execute dynamic query
EXEC sp_executesql @SQLQuery
Спасибо это то что мне было нужно
Отметьте СУБД (например,
MySQL,SQL Serverи т. д.), Которую вы используете.