动态地将行显示为列
我想不出更好的方式来表达标题,如果有人能想出更好的东西,请随意。基本上有一个旧的 VB6 应用程序,它从我或多或少完全重组的数据库中提取数据,并立即向用户提供所有产品信息的转储。所以我需要做一些内部联接来将所有这些表放在一起。我知道如何进行基本的内部联接,但我坚持一个细节。有一些表,其中每个项目都有多个条目。例如,CrossReference 表中的一项可能有多个交叉引用编号,也可能只有一个,或者根本没有。是否可以将它们动态放置到单独的列中。所以 this:
Item CrossReferenceNumber
XXXXX crossref1
XXXXX crossref2
XXXXX crossref3
可能会变成这样(与其他一些表连接后):
Item BasePart Size CrossReferenceNumber1 CrossReferenceNumber2 CrossReferenceNumber3
XXXX XXXX Large crossref1 crossref2 crossref3
但如果没有交叉引用,就不会有交叉引用列。这样的事情可能发生还是我在做梦?
I couldn't think of a good way to word the title, if anyone can come up with something better please feel free. Basically there is an old VB6 app that pulls data from a db that I have more or less completely restructured and gives the user a dump of all of the product information at once. So I need to do some inner joins to get all of these tables together. I know how to do basic inner joins but I am stuck on one detail. There are a few tables where there are multiple entries for each item. For example, the CrossReference table may have multiple cross reference numbers for an item, or it may only have one, or it may have none at all. Is it possible to have those placed dynamically into separate columns. so
this:
Item CrossReferenceNumber
XXXXX crossref1
XXXXX crossref2
XXXXX crossref3
could become this (after a join with some other tables):
Item BasePart Size CrossReferenceNumber1 CrossReferenceNumber2 CrossReferenceNumber3
XXXX XXXX Large crossref1 crossref2 crossref3
But if there were no cross references, there would be no cross reference columns. Is something like that possible or am I dreaming?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
Oracle 11g 和 Sql Server 2005+ 都包含一个可以完成您想要的任务的数据透视命令。
http://www.orafaq.com/wiki/PIVOT
http://msdn.microsoft.com/en-us/library/ms177410.aspx
否则您需要构建一个动态 sql 语句来实现此目的。
编辑 - 给你(SQL Server 版本)。
Oracle 11g and Sql Server 2005+ both contain a pivot command that will accomplish what you want.
http://www.orafaq.com/wiki/PIVOT
http://msdn.microsoft.com/en-us/library/ms177410.aspx
Otherwise you would need to build a dynamic sql statement to achieve this.
Edit - Here you go (SQL Server version).