【发布时间】:2012-02-09 09:50:41
【问题描述】:
这是表结构,前 6 列作为复合键。
col1 col2 col3 col4 col5 col6 col7 col8
A1 A2 A3 A4 A5 1 xx yy
A1 A2 A3 A4 A5 2 xxx yyy
A1 A2 A3 A4 A5 3 a b
A1 B2 A3 A4 A5 4 aa bb
B1 A2 A3 A4 A5 5 aaa bbb
B1 B2 B3 B4 B5 6 d e
B1 B2 B3 B4 B5 7 dd ee
B1 B3 C3 B4 B5 8 ddd eee
我需要一个返回如下值的存储过程
A1 A2 A3 A4 A5 xx yy xxx yyy a b
A1 B2 A3 A4 A5 aa bb
B1 A2 A3 A4 A5 aaa bbb
B1 B2 B3 B4 B5 d e dd ee
B1 B2 C3 B4 B5 ddd eee
感谢任何指针或帮助。
【问题讨论】:
-
在您的结果中,前 5 个值很简单。但是,每行都有不同数量的列。 SQL 只是不支持。您希望“xx, yy, xxx, yyy, a, b”(例如)作为单个字符串返回吗?如果是这样,为什么?像这样的非规范化感觉方法可能有问题,如果我们知道您想要实现的目标,我们可能会提供不同的方法。
-
感谢您的回复。如果前五列的行相同,我必须在表中的单行中显示值。是的,列将根据重复的行动态变化5 列。我是 sql 查询的新手。我不确定它是否可能。
-
简短的回答是“不,你不能有动态的列数”。如果您描述了您需要此结果 for 的用途,那么我们或许可以提供替代方案。
-
每个来自 SQL 的结果集都有一个特定的形状 - 它有一定数量的列,每个(命名的)列都有一个特定的数据类型。听起来您想要一个报告生成器,而不是 SQL。
-
我需要在上面的 winform 中的网格上显示结果。
标签: sql sql-server sql-server-2005 stored-procedures dynamic