我有一个表,其中itemno(产品的商品编号)和tax_rate最多包含321个印章组。邮票组适用于城市,县和州的不同税率。
我需要创建一个查询,向我显示每个itemno的tax_rate和stamp_group。由于每个itemno都有多行,我想组织我的查询,这样它就会显示左边的itemno和顶部的stampgroup,然后是表格中的tax_rate。
我想导出到Excel电子表格,以便提供给我的合规部门,以便他们可以扫描类似项目并确保税率正确。
提前感谢您的任何帮助!
查尔斯彼得森答案 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不是用于旋转数据的最佳工具。