导航:
论坛 -> 数据库专区
斑竹:liumazi,waterstone
作者:
moom (小新啊)
▲▲▲△△
-
普通会员
2018/8/18 19:24:06
标题:
如何SQL分组后把附属数据分列显示?
浏览:1544
加入我的收藏
楼主:
如 表 名: AA 字段名: 主类 子类 数值: 轮胎类 单车胎 轮胎类 汽车胎 灯泡类 小汽车前灯 灯泡类 小汽车后灯 灯泡类 摩托车转向灯 我要在 DBGRID 显示效果如下: 标题栏 : 轮胎类 灯泡类 数值: 单车胎 小汽车前灯 . 汽车胎 小汽车后灯 . . 摩托车转向灯 请问如何实现 ? 有没有 SQL 语法 可以实现? 谢谢各位....
----------------------------------------------
谢谢各位大大
作者:
2018/8/18 20:47:52
1楼:
行转列,这个数据库知识,我没学过。帮你顶一下。
----------------------------------------------
(C)(P)Flying Wang
作者:
2018/8/18 22:06:49
2楼:
SQL Server 吗?
----------------------------------------------
-
作者:
2018/8/18 22:10:22
3楼:
CREATE TABLE #AA( 主类 VARCHAR(50), 子类 VARCHAR(50), ) INSERT INTO #AA(主类, 子类) SELECT '轮胎类','单车胎' UNION ALL SELECT '轮胎类','汽车胎' UNION ALL SELECT '灯泡类','小汽车前灯' UNION ALL SELECT '灯泡类','小汽车后灯' UNION ALL SELECT '灯泡类','摩托车转向灯' --========== SELECT DENSE_RANK() OVER(ORDER BY 主类 ) id, DENSE_RANK() OVER(PARTITION BY 主类 ORDER BY 子类) Sub_id,* INTO #tempAA FROM #AA SELECT Sub_id INTO #temp_Sub FROM #tempAA GROUP BY Sub_id DECLARE @id INT, @Maxid INT,@FieldName SYSNAME, @Sql VARCHAR(MAX) SELECT @id=ISNULL(MIN(id), 1),@Maxid=ISNULL(MAX(id), 0) FROM #tempAA WHILE @id<=@Maxid BEGIN SELECT TOP 1 @FieldName=主类 FROM #tempAA WHERE Id=@id SET @Sql= 'ALTER TABLE #temp_Sub ADD ' + @FieldName + ' VARCHAR(50)' ----'ALTER TABLE #temp_Sub ADD 主类' + CAST(@id AS VARCHAR) + ' VARCHAR(50)' PRINT @Sql EXEC(@Sql) SET @Sql= 'UPDATE a SET a.' + @FieldName + '=b.子类 FROM #temp_Sub a INNER JOIN #tempAA b ON a.Sub_id=b.Sub_id WHERE b.Id=' + CAST(@id AS VARCHAR) PRINT @Sql EXEC(@Sql) SET @id=@id+1 END SELECT * FROM #temp_Sub
此帖子包含附件: 大小: 13.9K
----------------------------------------------
-
作者:
moom (小新啊)
▲▲▲△△
-
普通会员
2018/8/18 22:51:46
4楼:
哇.......ooooooo
----------------------------------------------
谢谢各位大大
作者:
2018/8/19 1:58:50
5楼:
这个是固定行转列么?如果是固定行的话,直接写就完了,哪需要搞那么复杂。临时表都用出来了。
----------------------------------------------
--
作者:
moom (小新啊)
▲▲▲△△
-
普通会员
2018/8/19 10:32:15
6楼:
楼上可否指点一二?
----------------------------------------------
谢谢各位大大
作者:
2018/8/19 12:01:36
7楼:
首先确定是否固定行转固定列。 其次那个数值到底是什么东西? 如果撇开那个数值,你这样的行转列有什么意义么?
----------------------------------------------
--