Sql server tetime)=YEAR(CAST('2017-5-01'as Date))由此显示的列“CostLedger.TransactionDateTime”在选择列表中无效,因为它既不包含在聚合函数中,也不包含在GROUP by子句中。Sorry@donasa
Sql server tetime)=YEAR(CAST('2017-5-01'as Date))由此显示的列“CostLedger.TransactionDateTime”在选择列表中无效,因为它既不包含在聚合函数中,也不包含在GROUP by子句中。Sorry@donasa,sql-server,sql-server-2008,sql-server-2012,Sql Server,Sql Server 2008,Sql Server 2012,tetime)=YEAR(CAST('2017-5-01'as Date))由此显示的列“CostLedger.TransactionDateTime”在选择列表中无效,因为它既不包含在聚合函数中,也不包含在GROUP by子句中。Sorry@donasanissac,似乎您正试图显著地改变这个问题。我在这个答案中的查询根据问题中的样本数据返回正确的结果。如果你有比一个简单的运行总数更复杂的问题,那么最好问另一个问题并正确地解释这个问题。提供一组很好的相关示例数据,以突出问题并解释您想要达到的结
tetime)=YEAR(CAST('2017-5-01'as Date))由此显示的
列“CostLedger.TransactionDateTime”在选择列表中无效,因为它既不包含在聚合函数中,也不包含在GROUP by子句中。
Sorry@donasanissac,似乎您正试图显著地改变这个问题。我在这个答案中的查询根据问题中的样本数据返回正确的结果。如果你有比一个简单的运行总数更复杂的问题,那么最好问另一个问题并正确地解释这个问题。提供一组很好的相关示例数据,以突出问题并解释您想要达到的结果。好的,没有pblm我认为我的代码与您的代码相同,只是列“CostLedger.TransactionDateTime”中的错误在选择列表中无效,因为它既不包含在聚合函数中,也不包含在GROUP BY中子句。
如何将其写入--->(SUM(ISNULL(A.ColumnA,0))作为十进制数(18,3))
-->SUM(ColumnA)OVER(在无界的前一行和当前行之间按列B排序)由于显示以下错误的SumColumnA
在选择列表中无效,因为它既不包含在聚合函数中,也不包含在GROUP BY子句中@DONASUSANISAC-如果您在(…)上使用SUM(),则查询根本不需要GROUP BY
子句。选择EOMOUNT(A.Transact-DateTime)Transact-DateTime,CAST(SUM(ISNULL(A.Profit,0))作为十进制(18,3))利润,SUM(A.Profit)超过(在无界的前一行和当前行之间按A.Transact-DateTime行排序)作为成本分类账A的sumcolumina,其中ISNULL(Profit,0)>0和年份(Transact-DateTime)=年份(CAST('2017-May-01'作为日期))
由此显示的列“CostLedger.TransactionDateTime”在选择列表中无效,因为它既不包含在聚合函数中,也不包含在GROUP by子句中。
Sorry@DonaSusanIssac,您似乎试图显著更改问题。我在回答中的查询根据问题中的示例数据。如果您有比简单的运行总数更复杂的问题,那么最好再问另一个问题并正确地解释问题。提供一组良好的相关示例数据,突出问题并解释您想要实现的结果。好的,不,pblm我认为我的代码与您的代码简单性相同只有此列“CostLedger.TransactionDateTime”中的错误在选择列表中无效,因为它未包含在聚合函数或GROUP BY子句中。
DECLARE @t TABLE(ColumnA INT, ColumnB VARCHAR(50));
INSERT INTO @t
VALUES (10,'1'), (50,'2'), (100,'3'), (5,'4'), (45,'5');
;WITH cte AS
(
SELECT ColumnB, SUM(ColumnA) asum
FROM @t
GROUP BY ColumnB
), cteRanked AS
(
SELECT asum, ColumnB, ROW_NUMBER() OVER(ORDER BY ColumnB) rownum
FROM cte
)
SELECT
(SELECT SUM(asum)
FROM cteRanked c2
WHERE c2.rownum <= c1.rownum) AS ColumnA,
ColumnB
FROM
cteRanked c1;
SELECT
t1.ID,
t1.Currency,
(SELECT SUM(t2.Currency) FROM yourTable t2 WHERE t2.ID <= t1.ID) AS Sum
FROM yourTable t1
DECLARE @t TABLE(ColumnA INT, ColumnB VARCHAR(50));
INSERT INTO @t
VALUES (10,'1'), (50,'2'), (100,'3'), (5,'4'), (45,'5');
SELECT
ColumnB
,ColumnA
,SUM(ColumnA) OVER (ORDER BY ColumnB
ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS SumColumnA
FROM @t
ORDER BY ColumnB;
+---------+---------+------------+
| ColumnB | ColumnA | SumColumnA |
+---------+---------+------------+
| 1 | 10 | 10 |
| 2 | 50 | 60 |
| 3 | 100 | 160 |
| 4 | 5 | 165 |
| 5 | 45 | 210 |
+---------+---------+------------+