【问题标题】:Cross Tab query in SQL Server 2008SQL Server 2008 中的交叉表查询
【发布时间】:2012-06-22 14:48:04
【问题描述】:

我有一个包含以下字段的 SQL 表

ID, Rly, Shed, Loco_no, shed, Date_failure, Equipt

我正在使用 MS Access 2007 中的以下脚本在访问中使用交叉表查询

TRANSFORM Count(Sheet1.[sno]) AS CountOfsno
SELECT Sheet1.[Equipt], Count(Sheet1.[sno]) AS [Total Of sno]
FROM Sheet1
GROUP BY Sheet1.[Equipt]
PIVOT Sheet1.[Shed];

如何将此查询转换为 SQL Server 存储过程以在 aspx 页面上使用?

请帮忙

【问题讨论】:

  • 在 SQL Server 标记中也搜索 Pivot。
  • 我试过上面提到的例子:SELECT Equipt, [BSL] AS BSL, [AQ] AS AQ FROM (SELECT Equipt, Shed FROM PunctualityMain) ps PIVOT (COUNT (Equipt) FOR Equipt IN ( [BSL], [AQ])) AS pvt 但它会生成错误:Invalid column name 'Equipt'。
  • @user1235981 如果您发布一些有用的示例数据

标签: sql sql-server-2008 ms-access-2007 pivot crosstab


【解决方案1】:

在 SQL Server 中,您需要查看 PIVOT 函数。考虑到您没有提供有关表格或样本数据的许多详细信息,根据您在 cmets 中的尝试,类似这样的事情可能会为您指明正确的方向。

SELECT *
FROM
(
    SELECT Equipt, Shed
    FROM PunctualityMain
) x
PIVOT
(
    COUNT(Equipt)
    FOR Shed IN ([BSL], [AQ])
) p

如果您发布更多详细信息,那么我们可以提供更多帮助。

【讨论】:

  • 第一场“装备”数据 - TFP、TM、VCD、VCB、齿轮、转向架和第二场“棚”数据 - BSL、AQ、TKD、AJJ、GZB、NKJ。要求是 Shed 中的设备计数,例如 Shed BSL 中的 22 TM 或 Shed AJJ 中的 5 TFP。
  • 感谢上面的回答,但缺少 eqipt 的名称。请求。 BSL 中的 TFP 为 5,AQ 中为 2; VCD 8 个 BSL,1 个 AQ 等
  • 请使用表格中的一些示例数据以及预期结果来编辑您的 OP。请在最终产品中包含您需要的所有字段。
  • 我已经根据我的要求修改了你的答案,它对我有用。非常感谢。
  • 装备 BSL AQ TFP 0 3 TM 4 0 VCB 1 1 VCD 5 0 这是结果。是否也可以在每行的末尾添加总计字段,例如 Equipt BSL AQ Total
猜你喜欢
  • 2014-04-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-15
  • 1970-01-01
  • 1970-01-01
  • 2018-04-21
  • 1970-01-01
  • 2014-10-23
相关资源
最近更新 更多