сводные столбцы varchar в SQL Server? - PullRequest
3 голосов
/ 11 июня 2019

enter image description here

Я пытался получить какой-то результат в сводной таблице, но не получил ожидаемого результата. Вот, я поместил код и результат.

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

Ответы [ 2 ]

1 голос
/ 11 июня 2019

Следующий запрос должен делать то, что вы хотите:

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
0 голосов
/ 11 июня 2019

Я думаю, что вы на самом деле хотели бы использовать 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...