首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用SQL中的枢轴发出问题

使用SQL中的枢轴发出问题
EN

Stack Overflow用户
提问于 2018-04-03 18:07:46
回答 1查看 626关注 0票数 0

在查看这个示例时,我尝试使用POVIT,下面是代码:

代码语言:javascript
复制
    CREATE DATABASE DEMO
GO
 
USE DEMO
GO
 
-- Creating table for demo
IF (object_id('TblPivot','U') > 0)
DROP TABLE TblPivot
 
CREATE TABLE TblPivot
(
ItemCode int,
ItemName varchar(100),
ItemColour varchar(50)
)
GO
 
-- Inerting some sample records
INSERT INTO TblPivot
SELECT 1,'Samsung Mobile','Red'
UNION ALL
SELECT 2,'Nokia Mobile','Blue'
UNION ALL
SELECT 3,'Nokia Mobile','Green'
UNION ALL
SELECT 4,'Motorola Mobile','Red'
UNION ALL
SELECT 5,'Samsung Mobile','Green'
UNION ALL
SELECT 2,'Nokia Mobile','Blue'
UNION ALL
SELECT 1,'Samsung Mobile','Red'
UNION ALL
SELECT 2,'Nokia Mobile','Blue'
GO

这里是支点选择

代码语言:javascript
复制
        -- Getting table data
    SELECT
    ItemCode, 
    ItemName, 
    ItemColour
    from TblPivot
    GO
     
    -- Getting agreegated data using Pivot and converted rows to column
    SELECT
    *
     FROM
     (
        SELECT
     ItemCode, 
     ItemName, 
     ItemColour
        FROM TblPivot
     ) AS P
    PIVOT
    (
      Count(ItemName) FOR ItemColour IN (Red, Blue, Green)// Here is the Issue 
where it knows what words to give it like Red,Blue,Green what I want is to use 
what ever the ItemColur it could be 100s What ever you get
 from the data base use that for the `IN(ItemColur)`  
    ) AS pv
    GO

它一直说,PIVOT操作符中指定的列名"ItemColur“与PIVOT参数中的现有列名相冲突。我怎么才能让它起作用,我甚至试着让临时表不工作

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-03 19:12:08

这是动态支点的代码:

代码语言:javascript
复制
DECLARE @columns NVARCHAR(MAX), @sql NVARCHAR(MAX);
SET @columns = N'';
SELECT @columns += N', p.' + QUOTENAME(ItemColour)
  FROM (SELECT distinct p.ItemColour FROM dbo.TblPivot AS p
  ) AS x;
SET @sql = N'
SELECT itemcode, ' + STUFF(@columns, 1, 2, '') + '
FROM
(
  SELECT p.itemcode, p.ItemName, p.ItemColour
   FROM dbo.TblPivot AS p
) AS j
PIVOT
(
  COUNT(ItemName) FOR ItemColour IN ('
  + STUFF(REPLACE(@columns, ', p.[', ',['), 1, 1, '')
  + ')
) AS p;';
PRINT @sql;
EXEC sp_executesql @sql;

上述查询的输出如下所示:

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49636574

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档