我需要查询大型表格中的数据,我可以将这些项目与税率进行比较

时间:2011-03-22 13:56:30

标签: sql sql-server-2000

我有一个表,其中itemno(产品的商品编号)和tax_rate最多包含321个印章组。邮票组适用于城市,县和州的不同税率。

我需要创建一个查询,向我显示每个itemno的tax_rate和stamp_group。由于每个itemno都有多行,我想组织我的查询,这样它就会显示左边的itemno和顶部的stampgroup,然后是表格中的tax_rate。

我想导出到Excel电子表格,以便提供给我的合规部门,以便他们可以扫描类似项目并确保税率正确。

提前感谢您的任何帮助!

查尔斯彼得森

2 个答案:

答案 0 :(得分:1)

SQL Server 2000没有PIVOT类型的运算符。这意味着您实际上有两个选项...
1.对所有321个邮票组的查询进行硬编码 2.以标准化形式返回结果,并将Excel的VBA放入列中

我会偏袒后者,因为它更多的是关于演示而不是数据。但如果前者是必要的,它看起来就像......

SELECT
  itemno,
  MAX(CASE stamp_group WHEN '1' THEN taxrate ELSE NULL END) AS taxrate_1,
  MAX(CASE stamp_group WHEN '2' THEN taxrate ELSE NULL END) AS taxrate_2,
  MAX(CASE stamp_group WHEN '3' THEN taxrate ELSE NULL END) AS taxrate_3
FROM
  myTable
GROUP BY
  itemno

这假设税率是数字,并且(itemno,stamp_group)的每个组合最多只有一个税率。

(注意:MAX()将从CASE语句中看到一大堆NULL,只有一个非NULL值。)


如果税率不是数字,MAX()将不喜欢它。在这种情况下,我建议使用税率创建一个查找表,使您能够为每个税率提供一个数字ID。然后你可以使用那个ID。

答案 1 :(得分:1)

还可以考虑使用Access数据库及其交叉表向导为您执行透视,或者您可以在Excel中轻松转动。 SQL不是用于旋转数据的最佳工具。