【发布时间】:2014-12-27 05:47:32
【问题描述】:
我有一个详细的表格,例如:
COMPANY DATE GROUP AMT
Sentana 12Dec A 1200
Sentana 12Dec B 800
Toyq 12Dec A 1300
Toyq 12Dec A 100
Sentana 12Dec B 300
Toyq 13Dec A 700
Sentana 12Dec A 800
现在我想根据 3 列(COMPANY DATE GROUP)创建一个复合唯一键,因此输出如下:
COMPANY DATE GROUP AMT
Sentana 12Dec A 2000
Sentana 12Dec B 1100
Toyq 12Dec A 1400
Toyq 13Dec A 700
我使用过如下查询(SQL): 创建表 TEMP 为 从表中选择 DISTINCT COMPANY、DATE、GROUP、sum(AMT) 按公司、日期、集团分组
Error: The AMT gets increased to many folds maybe
because there are some more columns.
注意:我需要基于 3 列(COMPANY DATE GROUP)创建一个包含复合键的表,以便我可以将它与另一个表连接起来。我可以通过连接三列来创建复合键,但由于重复组合在 3 列中,很难得到想要的结果。
【问题讨论】:
-
您使用的是哪个 RDBMS?
-
在你的选择子句中避免
Distinct -
我猜我正在使用 SAS,它使用 PostgreSQL 作为后端。它还支持使用 PROC SQL 命令的 SQL 语法。
-
除了
group是保留字之外,您的查询看起来还不错。distinct是不必要的,应该删除,但它不应该导致错误。 -
问题不清楚。您是要编写 SELECT 查询还是实际向表中添加复合唯一键?
标签: sql postgresql sas proc-sql