【发布时间】:2014-05-17 05:19:30
【问题描述】:
我的 T-SQL 查询需要帮助。我正在尝试做的是以下内容:
在结果中,我希望在第二列中按Store no. 分组的一列我希望net Amount 的总和为Sales,第三列我希望它显示每个store no. 的去年销售额
+-------+--------+------------+
| Store | Sales | Last Year |
+-------+--------+------------+
| 401 | 20000 | 19000 |
| 402 | 25000 | 21000 |
| 403 | 10000 | 15000 |
+-------+--------+------------+
注意:今年的销售额在一个名为“Trans_Sales Entry”的表中,去年的销售额在一个名为“Archived Sales Entry”的表中
我也不想在查询中手动输入日期,我宁愿想要一个变量,例如(“今天”和“今天”-365)
这是正确的方法吗,还是有更好的方法?
SELECT
"Company$Trans_ Sales Entry"."Store No_" AS "Store",
SUM("Company$Trans_ Sales Entry"."Net Amount"*-1) AS "Sales",
SUM("Company$Archived Sales Entry"."Net Amount"*-1) AS "Last Year"
FROM "Company$Trans_ Sales Entry"
JOIN "Company$Archived Sales Entry" ON
"Company$Trans_ Sales Entry"."Store No_"="Company$Archived Sales Entry"."Store No_"
WHERE
"Company$Trans_ Sales Entry"."Date"='2014-05-16' AND
"Company$Archived Sales Entry"."Date"='2013-05-16'
GROUP BY
"Company$Trans_ Sales Entry"."Store No_",
"Company$Archived Sales Entry"."Store No_"
当我执行这个查询时,我在“销售额”和“去年”中得到的数字太高了。我的查询有问题...希望有人能提供帮助!
如果我执行此操作,销售数字是正确的,但我没有包括去年列:
Select
[Company$Trans_ Sales Entry].[Store No_] As Store,
Sum([Company$Trans_ Sales Entry].[Net Amount]) As Sales
From
[Company$Trans_ Sales Entry]
Where
[Company$Trans_ Sales Entry].Date = '2014-05-16'
Group By
[Company$Trans_ Sales Entry].[Store No_]
在 trans 和 archived 表中每个商店都有多行,这就是为什么我需要对所有行求和并在两个表中按商店对它们进行分组。
【问题讨论】:
-
请将您的cmets直接合并到问题中,使其更完整和可读。由于这看起来像是 JOIN 的问题,因此您还应该包括要连接的表的结构。在 trans 和 archived 表中,每个商店的行数是否超过 1 行?如果是这样,那么您的查询注定会产生成倍的结果。
-
感谢您的评论弗拉兹,我现在已经做到了。是的,两个表中每个商店都有多行...
标签: sql sql-server join group-by sum