【发布时间】:2018-05-18 15:45:49
【问题描述】:
从 SQL 开始。
我正在尝试从几个表中收集数据以生成摘要,其中第一个表中的值按字段 Repcode 分组并总计。通过查找 Repcode 字段,在结果光标中将有从第二个表中获取的描述。
这是一个非常简化的测试程序
CREATE CURSOR Nomtot (tcode C(4), tRepcode C(2), tBalance N(9,2))
INSERT INTO nomtot (tCode, tRepcode, tBalance) VALUES ("A001", "12", 123.45)
INSERT INTO nomtot (tCode, tRepcode, tBalance) VALUES ("B003", "17", 555.45)
INSERT INTO nomtot (tCode, tRepcode, tBalance) VALUES ("B006", "19", 666.00)
INSERT INTO nomtot (tCode, tRepcode, tBalance) VALUES ("E008", "12", 810.00)
CREATE CURSOR RepLook (tRepcode C(2), tDesc C(30))
INSERT INTO Replook(tRepcode, tDesc) VALUES ("12", "Materials")
INSERT INTO Replook(tRepcode, tDesc) VALUES ("17", "Carriage")
INSERT INTO Replook(tRepcode, tDesc) VALUES ("19", "Dividends")
SELECT a.tRepcode, SUM(a.tBalance) AS tBalance, b.tDesc ;
FROM Nomtot a, Replook b ;
GROUP BY a.tRepcode ;
WHERE a.tRepcode = b.tRepcode ;
INTO CURSOR cResult
但这会产生错误:SQL GROUP BY 命令丢失或无效。 如果我然后将语句更改为 GROUP BY a.tRepcode, b.tDesc ; . . .该程序产生所需的结果。 为什么第二条是必要的?我这样做对吗
感谢指导。谢谢。
【问题讨论】:
-
按照您编写的方式,您还需要按
b.tDesc分组。这是因为您必须按所有非聚合列进行分组。
标签: sql select group-by visual-foxpro