繁体   English   中英

SQL Server中的pivot varchar列?

[英]pivot varchar columns in SQL Server?

在此输入图像描述

我试图将一些结果放入数据透视表但没有得到预期的结果。在这里我已经把代码和结果。

DECLARE @TblIdeaCategory TABLE 
(
IdeaImplement varchar(2000),
IdeaCategory varchar(2000)
)

INSERT INTO @TblIdeaCategory values('Metrics Feedback One  #1','MetricFeedback')
INSERT INTO @TblIdeaCategory values('Metrics Feedback Two #1','MetricFeedback')
INSERT INTO @TblIdeaCategory values('Analysis Feedback One #1','AnalysisFeedback')
INSERT INTO @TblIdeaCategory values('Analysis Feedback Two #1','AnalysisFeedback')
INSERT INTO @TblIdeaCategory values('Idea Generation Feedback One #1','IdeaGenerationFeedback')
INSERT INTO @TblIdeaCategory values('Idea Generation Feedback Two #1','IdeaGenerationFeedback')


select 
 IdeaGenerationFeedback,AnalysisFeedback,MetricFeedback from 

(select IdeaImplement,IdeaCategory
 from  @TblIdeaCategory as board
 ) resultTable
pivot (
 max(IdeaImplement)  for IdeaCategory in (IdeaGenerationFeedback,AnalysisFeedback,MetricFeedback))  as resultpivot


 select  IdeaImplement,IdeaCategory from @TblIdeaCategory

以下查询应该执行您想要的操作:

DECLARE @TblIdeaCategory TABLE 
(
IdeaImplement varchar(2000),
IdeaCategory varchar(2000)
)

INSERT INTO @TblIdeaCategory values('Metrics Feedback One  #1','MetricFeedback')
INSERT INTO @TblIdeaCategory values('Metrics Feedback Two #1','MetricFeedback')
INSERT INTO @TblIdeaCategory values('Analysis Feedback One #1','AnalysisFeedback')
INSERT INTO @TblIdeaCategory values('Analysis Feedback Two #1','AnalysisFeedback')
INSERT INTO @TblIdeaCategory values('Idea Generation Feedback One #1','IdeaGenerationFeedback')
INSERT INTO @TblIdeaCategory values('Idea Generation Feedback Two #1','IdeaGenerationFeedback')


select 
 IdeaGenerationFeedback,AnalysisFeedback,MetricFeedback from 

(select IdeaImplement,IdeaCategory,ROW_NUMBER() OVER(PARTITION BY IdeaCategory ORDER BY (SELECT 1)) AS RNO
 from  @TblIdeaCategory as board
 ) resultTable
pivot (
MAX(IdeaImplement)  for IdeaCategory in (IdeaGenerationFeedback,AnalysisFeedback,MetricFeedback))  as resultpivot

结果如下,

IdeaGenerationFeedback            AnalysisFeedback           MetricFeedback
Idea Generation Feedback One #1   Analysis Feedback One #1   Metrics Feedback One #1
Idea Generation Feedback Two #1   Analysis Feedback Two #1   Metrics Feedback Two #1

我认为你实际上想要在这里使用UNPIVOT而不是PIVOT ,但无论如何你可以使用一系列联盟,无论如何它们可能会表现得更好。

SELECT IdeaGenerationFeedback AS IdeaImplement, 'IdeaGenerationFeedback' AS IdeaCategory
FROM yourOriginalTable
UNION ALL
SELECT AnalysisFeedback, 'AnalysisFeedback' FROM yourOriginalTable
UNION ALL
SELECT MetricFeedback, 'MetricFeedback' FROM yourOriginalTable;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM