【问题标题】:Pivot table in SQL Server with a large data set具有大型数据集的 SQL Server 中的数据透视表
【发布时间】:2016-02-14 05:11:04
【问题描述】:

我有一个大型数据集,并试图在 SQL Server 中复制一个 excel 数据透视表。我找不到不必使用 T-SQL 中的 PIVOT 函数手动命名列标题的示例。

我正在寻找一种方法来使用SELECT DISTINCT [column 1] 作为我的行名和SELECT DISTINCT [COLUMN 2] 作为我的列名,并使用第三列中的数据填充该表。

请帮忙!

【问题讨论】:

标签: sql sql-server pivot pivot-table


【解决方案1】:

试试这个:

    DECLARE @v_Columns VARCHAR(MAX),@v_StartDate DATETIME = '09/15/2015',@v_EndDate DATETIME = '12/15/2020',@v_Query VARCHAR(MAX)SELECT @v_Columns = COALESCE(@v_Columns,'[') + convert(varchar, Date, 101) + '],[' 
FROM 
(SELECT DISTINCT Date FROM view_wc_sessions_info) th
WHERE
th.Date BETWEEN @v_StartDate AND @v_EndDate

SET @v_Columns = SUBSTRING(@v_Columns, 1, LEN(@v_Columns)-2)

SET @v_Query = 

'SELECT
*
FROM
(
 select [Total], Date, fk_student_rcid
  from view_WC_SESSIONS_Info th
WHERE
th.Date BETWEEN ''' + CONVERT(VARCHAR(50), @v_StartDate, 101) + '''
AND ''' + CONVERT(VARCHAR(50), @v_EndDate, 101) + '''
) src
PIVOT
(
COUNT(src.[Total])
FOR src.Date IN (' + @v_Columns + ')
) AS pivotview'

EXEC(@v_Query)

【讨论】:

  • ^ 我认为代码有效,但我收到以下错误消息 1701,级别 16,状态 1,第 1 行创建或更改表“FakeWorkTable”失败,因为最小行大小为 8205,包括 133字节的内部开销。这超出了允许的最大表行大小 8094 字节。消息 8630,级别 17,状态 48,第 1 行内部查询处理器错误:查询处理器在执行期间遇到意外错误 (HRESULT = 0x80004005)。
猜你喜欢
  • 1970-01-01
  • 2011-12-10
  • 1970-01-01
  • 2014-02-15
  • 1970-01-01
  • 1970-01-01
  • 2013-01-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多