【发布时间】:2021-10-06 03:25:43
【问题描述】:
很抱歉很难创建一个描述性的主题,但这里是对我正在尝试做的事情的解释:
这是我拥有的数据的形状:
所以对于EffectiveDates的每一组,如果有多行具有相同的SecGlobalId并且他们的SecType只有“CASH”,我想结合他们@的总和987654328@ 并且只有 ONE 行仅用于那些,例如,对于 24 日,我想为 USD 设置一行,其 Cost 列的值为 23.45 + 10.00 = 33.45,然后在 25 日设置另一行为 140.23 + 45.41
这是我创建的示例脚本,我尝试进行分组,但这是不对的。所以我不确定如何解决它。
CREATE TABLE #Practice
(
SecGlobalID INT,
Name NVARCHAR(50),
EffectiveDate DATE,
Cost DECIMAL(20,2),
SecType NVARCHAR(5)
);
INSERT INTO #Practice (SecGlobalID, Name, Cost, EffectiveDate, SecType)
VALUES
(1234, 'USD', 23.45, '2021-07-24', 'CASH')
,(1234, 'USD', 10.00, '2021-07-24', 'CASH')
,(789, 'Tesla', 564.72, '2021-07-24', 'STOCK')
,(5223, 'Starbucks', 4534.12, '2021-07-24', 'STOCK')
,(9987, 'GER', 50.00, '2021-07-24', 'CASH')
,(1234, 'USD', 140.23, '2021-07-25', 'CASH')
,(1234, 'USD', 45.41, '2021-07-25', 'CASH')
,(9987, 'GER', 5.4, '2021-07-25', 'CASH')
,(43342, 'Security1', 3670.14, '2021-07-26', 'STOCK')
,(7777, 'Security2', 66.35, '2021-07-26', 'CASH')
SELECT SecGlobalID, Name, EffectiveDate, SUM(Cost), SecType
FROM #Practice
GROUP BY SecGlobalID, Name, EffectiveDate, SecType
DROP TABLE #Practice
所以这里是预期结果的截图:
【问题讨论】:
-
显示你想要的结果真的很有帮助!
-
@GordonLinoff 好的,我也添加了预期结果的屏幕截图。
-
@UnskilledCoder:你得到的代码不是一样的(根据预期结果的截图)?还是您的预期结果是别的?
-
@huMptyduMpty :几乎是的......但我想更有条件地说,仅当类型为“现金”时才应用 SUM,而不要将 SUM 应用于其他类型的钱。跨度>
-
@UnskilledCoder:可能是您在总结案例陈述之后。已回答
标签: sql-server tsql sum case window-functions