SQL Select из массива

Есть ли простой способ выбрать из (длинного) массива? Я хочу что-то вроде этого

SELECT citizenship, count(1) 
FROM table 
WHERE year(date) = 2018 
GROUP BY citizenship

Но я хочу, чтобы все гражданство было в виде столбца, а все даты (с 2000 по 2018 год) в виде строк, чтобы я мог удалить предложение where.

Отметьте СУБД (например, MySQL, SQL Server и т. д.), Которую вы используете.

Yogesh Sharma 14.08.2018 15:41

добавьте образец данных вашего массива .. (по крайней мере)

scaisEdge 14.08.2018 15:43
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
2
2 130
2

Ответы 2

Добавление отчетливый даст вам список уникальных граждан

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

Спасибо это то что мне было нужно

Dan Dean 22.08.2018 12:07

Другие вопросы по теме