【问题标题】:dynamic columns in Query Or view查询或视图中的动态列
【发布时间】:2015-01-05 08:22:24
【问题描述】:

请帮助我。如何在查询中显示动态列。我想要一个视图。 提前致谢


我的Out是这样的。

select SectionID,
      Column1, Column2, Column3
from
(
  select S.SectionID,ColumnDataName, ColumnDescription,
    row_number() over(partition by S.SectionID
                      order by SectionTableColumnID) seq
  from dbo.SectionTableColumn vt
  INNER JOIN dbo.Section S ON S.SectionID = vt.SectionID



) d
pivot
(
  max(ColumnDescription)
  for ColumnDataName in ( Column1, Column2, Column3)
) piv;

【问题讨论】:

  • 你真的在使用 MySQL AND SQL Server AND Postgresq 吗?
  • 不,我只使用 SQL Server 2008。
  • 只是为了标签,我选择了这些东西。
  • 我正在做支点,但我的输出没有这样显示
  • 那么您需要发布您尝试过的内容。并且只标记与问题相关的内容。

标签: sql sql-server sql-server-2008 pivot


【解决方案1】:

无法创建具有动态列数的视图。您需要指定 ColumnDataName 的所有值才能使其正常工作。

您需要调整结果,这里是一个如何创建视图的示例:

CREATE TABLE 
  xxx(SectionID int, ColumnDescription varchar(10), ColumnDataName varchar(10))

INSERT xxx values(2, 'dgj', 'column1')
INSERT xxx values(2, 'ash', 'column2')
INSERT xxx values(8, 'lkhsdh', 'column2')

go

CREATE VIEW v_xxx as
SELECT SectionId, [column1],[column2],[column3] 
FROM xxx
PIVOT
(min(ColumnDescription)  
FOR ColumnDataName
in([column1],[column2],[column3])  
)AS p

go

SELECT * FROM v_xxx

结果:

SectionId   column1   column2   column3
2           dgj       ash       NULL
8           NULL      lkhsdh    NULL

【讨论】:

    猜你喜欢
    • 2010-09-18
    • 2022-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多