使用 SQL Server 2000 进行数据透视
我整理了我的问题的示例场景,希望有人能指出正确的方向。
我有两个表
产品
产品元
我需要以下结果集
I put together a sample scenario of my issue and I hope its enough for someone to point me in the right direction.
I have two tables
Products
Product Meta
I need a result set of the following
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
我意识到这已经有两年了,但让我感到困扰的是,接受的答案要求使用动态 SQL,而获得最多支持的答案将不起作用:
你必须使用分组依据,否则你会得到一个交错的结果结果。 如果使用 Group By,则必须将不在 Group By 子句中的每一列包装在聚合函数(或子查询)中。
I realize this is two years old, but it bugs me that the accepted answer calls for using dynamic SQL and the most upvoted answer won't work:
You must use a Group By or you will get a staggered result. If you are using a Group By, you must wrap each column that is not in the Group By clause in an aggregate function (or a subquery).
我们过去已经成功地使用了以下方法...
它也可以通过使用...
编辑
进行转置聚合,另外值得注意的是,这是使用 ANSI 标准 SQL,因此它可以工作跨平台:)
We've successfully used the following approach in the past...
It can also be useful transposing aggregations with the use of...
EDIT
Also worth noting this is using ANSI standard SQL and so it will work across platforms :)
如果您的数据库引擎是 2005 并且数据库处于 2000 兼容模式,则可以通过从 2005 数据库运行查询来解决较低的兼容性模式。 通过对查询中的表使用 3 部分命名约定来定位 2000 数据库,例如
DatabaseNameHere.dbo.TableNameHere
If your database engine is 2005 and your database is in 2000 compatibility mode, you can work around the lower compatibility mode by running your query from a 2005 database. Target the 2000 database by using 3 part naming convention for your tables in the query such as
DatabaseNameHere.dbo.TableNameHere