我该如何翻转这张桌子:
+
类别+子类别
+
|Cat..........+波斯语.........|
|Cat..........+暹罗语....|
|Cat..........+猫...........|
|Dog.........+ Poodle..........|
|Dog.........+ Boxer............|
+
在它的一侧,获取以下内容:
+
|猫.........+狗.............|
+
Poodle.........+的
Boxer...........+ +
...................+ +
+
初始表来自以下MySQL查询:
select c.CATEGORYNAME, sc.NAME from subcategorydefinition sc
join categorydefinition c on sc.CATEGORYID = c.CATEGORYID
where c.ISDELETED = 0
order by CATEGORYNAME, NAME ASC我想(可能)在Gridview中显示它。
干杯!
发布于 2011-02-10 02:39:07
透视在SQL中是静态的。你需要事先知道你想要输出的列,所以如果类别列表不是固定的,你就不能直接使用pivot。
如果您使用的是Microsoft SQL Server (我知道您没有使用Microsoft SQL Server,但这只是为了举例),那么您可以在存储过程中使用动态查询,如下所述:http://www.simple-talk.com/community/blogs/andras/archive/2007/09/14/37265.aspx
现在,在MySql中,没有办法在SQL端执行动态SQL (没有execute或sp_executeqsl的等价物),因此您的最佳选择是在服务器端(aspnet服务器端)生成一个类似的sql查询。
另一个更简单的想法是忘记在SQL中做这件事,而是在你的C#代码中做聚合。
发布于 2011-02-10 01:51:58
您应该使用pivot
发布于 2011-02-10 02:49:05
要在SQL中做到这一点,您需要根据"Category“列中的可用值集动态生成查询。无论您是在纯SQL (在存储过程中)还是在代码(动态SQL)中执行,这通常都是相当痛苦且容易出错的。
我建议以存储的方式从数据库中读取值,然后动态创建一个DataTable或类似的结构作为UI的数据源。
https://stackoverflow.com/questions/4948502
复制相似问题