交叉数据表问题 非数字情况

pop1982 2006-04-17 08:45:44
看了个例子
CREATE TABLE tb(Groups char(2),Item varchar(10),Quantity int)
INSERT tb SELECT 'aa','Table', 124
UNION ALL SELECT 'aa','Chair', -23
UNION ALL SELECT 'aa','Cup' ,-23
UNION ALL SELECT 'bb','Cup', 101
UNION ALL SELECT 'bb','Chair', -90

--查询处理
DECLARE @s nvarchar(4000)
--交叉报表处理代码头
SET @s='SELECT Groups'
--生成列记录水平显示的处理代码拼接(处理Item列)
SELECT @s=@s
+','+QUOTENAME(Item)
+N'=sum(CASE Item WHEN '+QUOTENAME(Item,N'''')
+N' THEN Quantity END) '
FROM tb
GROUP BY Item
--拼接交叉报表处理尾部,并且执行拼接后的动态SQL语句
EXEC(@s+N'
FROM tb
GROUP BY Groups')



drop table tb

现在的问题是 我不要求和
我的数据是字符串
如:
CREATE TABLE tb(Groups char(2),Item varchar(10),Quantity varchar(10))
INSERT tb SELECT 'aa','Table', 'o1'
UNION ALL SELECT 'aa','Chair', 'o2'
UNION ALL SELECT 'aa','Cup' ,'a1'
UNION ALL SELECT 'bb','Cup', 'a2'
UNION ALL SELECT 'bb','Chair', 'a3'

怎么能转换 谢谢
...全文
162 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
dp_555 2006-04-18
  • 打赏
  • 举报
回复
友情接分。。。
十一月猪 2006-04-17
  • 打赏
  • 举报
回复
用max或者min吧
wangdehao 2006-04-17
  • 打赏
  • 举报
回复

DECLARE @s nvarchar(4000)
--交叉报表处理代码头
SET @s='SELECT Groups'
--生成列记录水平显示的处理代码拼接(处理Item列)
SELECT @s=@s
+','+QUOTENAME(Item)
+N'=max(CASE Item WHEN '+QUOTENAME(Item,N'''') --这
+N' THEN Quantity END) '
FROM tb
GROUP BY Item
--拼接交叉报表处理尾部,并且执行拼接后的动态SQL语句
EXEC(@s+N'
FROM tb
GROUP BY Groups')

---group by 必须用聚集函数
pop1982 2006-04-17
  • 打赏
  • 举报
回复
我去了sum就通不过 哪里出问题了?

34,875

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧