简体   繁体   English

SQL Server中的pivot varchar列?

[英]pivot varchar columns in SQL Server?

在此输入图像描述

I tried to get some result into a pivot table but not get the expected result.Here by I have put the code and result. 我试图将一些结果放入数据透视表但没有得到预期的结果。在这里我已经把代码和结果。

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

The following query should do what you want: 以下查询应该执行您想要的操作:

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

The result is as below, 结果如下,

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

I think you actually would want to use UNPIVOT here rather than PIVOT , but in any case you could just use a series of unions, which might perform better anyway. 我认为你实际上想要在这里使用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