gpt4 book ai didi

Sql Server 2008 交叉表查询

转载 作者:行者123 更新时间:2023-12-04 17:39:22 30 4
gpt4 key购买 nike

我通常可以找出我的应用程序需要的任何 sql 查询,但我最近被需要创建的交叉表查询难住了,想知道您是否可以提供帮助?

我有3张 table

Category(catID, catTitle) 
Equipment(equipID, make, model, quantity, catID, siteID)
Site(siteID, title)

我想创建一个交叉表查询来显示如下结果集
Category   Site1   Site2   Site3   Site4   Site5
PC 2 0 10 3 6
Camera 12 4 2 0 8
Printer 3 2 1 1 2

使用设备表中的数量字段显示的数字代表每个站点中每个类别项目的总数。我以前从来没有做过交叉表查询,我正在努力让它工作。

最佳答案

您应该可以使用 'pivot' 运算符来完成此操作。像这样的东西(虽然我确信我忽略了一些拼写或语法细节......):

select catTitle, [1] as site1, [2] as site2, [3] as site3, [4] as site4, [5] as site5
from (select category.catTitle, equipment.quantity, site.title
from equipment
inner join site
on (equipment.siteid = site.siteid)
inner join category
on (category.catid = equipment.catid)
)
pivot
(
sum (quantity)
for equipment.siteid in ( [1], [2], [3], [4], [5] )
) as pvt
order by pvt.category;

这样做的问题是您需要知道要包含在查询中的确切站点 ID 集。如果您需要更动态的交叉表(就像您可以在 Excel 中获得),那么您需要将查询文本生成为字符串并使用 sp_executesql 来运行它。在生成的文本中,您包含的“[1], [2], [3], [4], [5]...”和“[1] as site1, [2] as site2.. .”你需要的东西。

关于Sql Server 2008 交叉表查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7956908/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com