新宋吧 关注:368,477贴子:28,686,215

回复:求教吧里EXCEL高手,本卢实在是没招了。

只看楼主收藏回复

IF (OBJECT_ID(N'tempdb..#ShoeStockCatalog', N'U') IS NOT NULL)
BEGIN
DROP TABLE #ShoeStockCatalog;
END
CREATE TABLE #ShoeStockCatalog
(
[Code] BIGINT NOT NULL,
[CategoryName] SYSNAME,
[ColorName] SYSNAME,
[SizeSpecification] INT NOT NULL,
PRIMARY KEY ([Code], [CategoryName], [ColorName], [SizeSpecification])
);
INSERT INTO #ShoeStockCatalog ([Code], [CategoryName], [ColorName], [SizeSpecification])
VALUES (1, N'Male', N'Red', 37),
(1, N'Male', N'Red', 38),
(1, N'Male', N'Red', 39),
(1, N'Male', N'Red', 40),
...
;
DECLARE @DistinctAvailableSizes TABLE
(
[SizeSpecification] INT PRIMARY KEY
);
INSERT INTO @DistinctAvailableSizes ([SizeSpecification])
SELECT DISTINCT [SizeSpecification]
FROM #ShoeStockCatalog;
DECLARE @distinctSizes NVARCHAR(MAX), @selectColumns NVARCHAR(MAX);
SET @distinctSizes =
STUFF(
(SELECT N',[' + CAST([SizeSpecification] AS SYSNAME) + N']' AS "data()"
FROM @DistinctAvailableSizes
FOR XML PATH(N''), TYPE).value(N'.', N'NVARCHAR(MAX)'),
1, 1, N'');
SET @selectColumns =
STUFF(
(SELECT N',COALESCE([' + CAST([SizeSpecification] AS SYSNAME) +
N'], 0) AS [' +
CAST([SizeSpecification] AS SYSNAME) +
N']' AS "data()"
FROM @DistinctAvailableSizes
FOR XML PATH(N''), TYPE).value(N'.', N'NVARCHAR(MAX)'),
1, 1, N'');
DECLARE @sql NVARCHAR(MAX) = N'';
SET @sql = @sql +
N'SELECT [Code], [CategoryName], [ColorName], ' + @selectColumns +
N' FROM #ShoeStockCatalog t1 ' +
N' PIVOT (COUNT([SizeSpecification]) FOR [SizeSpecification] IN (' + @distinctSizes + N')) AS t2';
EXEC sys.sp_executesql @sql;


18楼2015-09-08 13:02
收起回复
    公式很快,但是设置格式忘记了.
    弄好了,你自己看看
    怎么上附件呀?给我个邮箱发给你吧


    IP属地:河北19楼2015-09-08 13:21
    收起回复
      2025-11-24 15:17:05
      广告
      不感兴趣
      开通SVIP免广告
      为什么不同码数的商品用相同的商品编码?


      IP属地:广东来自Android客户端20楼2015-09-08 13:21
      收起回复
        最好的办法是重新设置商品编码


        IP属地:广东来自Android客户端21楼2015-09-08 13:24
        回复
          用透视表可以,不过不是这个效果


          IP属地:湖北22楼2015-09-08 13:24
          回复
            不就是countifs的事吗?简单的很


            IP属地:福建来自Android客户端24楼2015-09-08 13:47
            回复
              用contif


              IP属地:广东来自Android客户端25楼2015-09-08 13:57
              回复
                http://yunpan.cn/cm5JgGrCKjSCK 访问密码 0d83
                看“输出”表单,采用了条件格式。


                IP属地:四川27楼2015-09-08 14:17
                收起回复
                  2025-11-24 15:11:05
                  广告
                  不感兴趣
                  开通SVIP免广告
                  根本没必要这样,因为颜色什么的根本不是确定的数量.楼主他思路和我的前段有点象,最简单的公式方法,就是我那个,你别想别的了,就是用透视表,也没有我那个简单.


                  IP属地:河北30楼2015-09-08 17:09
                  回复
                    谢谢楼上的各位帮忙,有两条路可以解决这个问题了
                    一个是EXCEL里面用透视,把结果出来再复制一下。然后再用 @shoutuo_2008 的办法用公式比对作标注颜色。
                    第二个办法就是直接在SQL里面查询出来。这个还没完全搞定。需要再学习一下。好多年没用SQL了。
                    再次谢谢大家。


                    IP属地:重庆31楼2015-09-08 17:12
                    收起回复
                      数据透视表加条件格式


                      IP属地:山西来自手机贴吧32楼2015-09-08 23:38
                      收起回复