SQL从数组中选择
有没有一种简单的方法可以从(长)数组中进行选择? 我想要这样的东西SQL从数组中选择,sql,postgresql,pivot,crosstab,Sql,Postgresql,Pivot,Crosstab,有没有一种简单的方法可以从(长)数组中进行选择? 我想要这样的东西 SELECT citizenship, count(1) FROM table WHERE year(date) = 2018 GROUP BY citizenship 但我希望所有公民身份列和所有日期(从2000年到2018年)行,这样我就可以删除where子句 添加distinct将为您提供唯一公民的列表 SELECT distinct citizenship FROM table WHERE year(date)
SELECT citizenship, count(1)
FROM table
WHERE year(date) = 2018
GROUP BY citizenship
但我希望所有公民身份列和所有日期(从2000年到2018年)行,这样我就可以删除where子句 添加distinct将为您提供唯一公民的列表
SELECT distinct citizenship
FROM table
WHERE year(date) >= 2000 and year(date) <= 2018
选择不同的公民身份
从桌子上
其中year(date)>=2000,year(date)听起来像是要使用透视列
这是我想你想要的。。。(在SQL Server中)
见本文:
适用于你,可能是
--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
标记您正在使用的DBMS(即MySQL
,SQL Server
等)。添加数组的数据示例。。(至少)谢谢,这是我需要的