【发布时间】:2011-12-19 19:40:58
【问题描述】:
我一直在搜索和阅读,但还没有找到我需要的东西。
表格
name,stuff1, stuff2, Skill1, Skill2, Skill3 ... Skill200
表中有 196 行。技能值的范围是 0-4。
我知道,没有标准化。现在它需要保持这种状态。
我要回去
姓名1,姓名2,姓名3,... 技能 1 技能 1 值,技能 1 值,技能 1 值,... 技能 2 技能 2 值,技能 2 值,技能 2 值,...每个名字永远只有一行。
换句话说,每个名称都有一个列,每个技能有一个行(该技能的值),并带有 where 子句 - where stuff = 'something'。我不需要做每一项技能,大约 200 列中的 10-15 列。
这是 mySQL。只有 196 行
提前致谢
【问题讨论】:
-
到目前为止您有什么尝试过的吗?有时,即使他们失败了,分享您的尝试也会有所帮助。这里的其他人也许可以从那里拿走它,进行更正,添加东西,然后让它工作..
-
不同的东西,比如每个技能的工会等等。我想我会收集一些失败的东西。
-
SELECT skill1 as Skill1, max( CASE name WHEN 'name1' THEN Skill1 ELSE 0 END ) AS 'name1', max( CASE name WHEN 'name2' THEN Skill1 ELSE 0 END ) AS 'name2' FROM 技能表 GROUP BY 1; --好吧,这给了我一个可能的值,它很接近,但如果我确实让它卷起来它有一些问题。 1)它需要是每个技能的联合和列的硬编码名称。如果我能把它正确地卷起来(一排,而不是 6 排),我可能会忍受它
-
Hmmn.. 我可以想到动态 sql 或游标,但这些不是有效的解决方案.. 也许您可以发布一些真实数据,以便我可以获得更好的图像?