我有一个具有此类数据的访问数据库,我想编写一个将输出组合行的查询。我已经研究了联合和其他事情,但我们并没有真正掌握他们如何做我想做的事情。
Person Company Item1 Item2 Item3
1 A 5
2 A 3
3 A 4
4 B 3
5 B 2
6 B 1
将它与
相结合Company Item1 Item2 Item3
A 5 3 4
B 3 2 1
每个公司应该只有一个Item1,我意识到如果我有双倍可能会有问题。但这是另一个问题。
答案 0 :(得分:0)
正如您所提到的,如果单个公司的每个项目有更多,肯定会出现问题,但这可能更多的是数据库设计问题,所以我们不要进入那个问题! :)
如果"项目1","项目2","项目3和#34;等下的数字是要一起计算/总和,那么你就很容易查询你的手:
SELECT Company, Sum(Item1) AS Item1Total, Sum(Item2) AS Item2Total, Sum(Item3) AS Item3Total
FROM test
GROUP BY Company;
如果您需要为每个项找到第一个非NULL值,那么您的查询将会更复杂一些。此示例使用子查询为当前公司的每个项目列/字段查找第一个非NULL条目:
SELECT t0.Company, (
SELECT TOP 1 t1.Item1
FROM test AS t1
WHERE t1.Company = t0.Company
AND t1.Item1 IS NOT NULL
) AS Item1Total, (
SELECT TOP 1 t2.Item2
FROM test AS t2
WHERE t2.Company = t0.Company
AND t2.Item2 IS NOT NULL
) AS Item2Total, (
SELECT TOP 1 t3.Item3
FROM test AS t3
WHERE t3.Company = t0.Company
AND t3.Item3 IS NOT NULL
) AS Item3Total
FROM test AS t0
GROUP BY Company;