Sql 在执行Group by之后,是否有办法在不同行的同一列中查看相同列的结果?
我想计算一列的总和,但日期不同。 因此,如果是今天,它应该计算今天的金额总和。我已经这样做了 如果只有行的日期与其他referencedate列匹配,则issue is Today列将显示数据。 我想查看所有列中的Today列数据,而不考虑任何日期或具有任何referencedate列的行。 例子 这就是我得到的:Sql 在执行Group by之后,是否有办法在不同行的同一列中查看相同列的结果?,sql,sql-server,tsql,Sql,Sql Server,Tsql,我想计算一列的总和,但日期不同。 因此,如果是今天,它应该计算今天的金额总和。我已经这样做了 如果只有行的日期与其他referencedate列匹配,则issue is Today列将显示数据。 我想查看所有列中的Today列数据,而不考虑任何日期或具有任何referencedate列的行。 例子 这就是我得到的: ReferenceDate Item Amount Today Yesterday Accordingtodate 03/29/2019 1 100
ReferenceDate Item Amount Today Yesterday Accordingtodate
03/29/2019 1 100 100 0 100
03/28/2019 1 80 0 80 80
03/27/2019 1 50 0 0 50
我在我的查询中输入了如下案例:
IsNull(Case When ReferenceDate = '03/29/2019' Then Sum(Fact_dayclosingsales.Qty) End,0) As Today, \\ For Today
IsNull(Case When ReferenceDate = '03/28/2019' Then Sum(Fact_dayclosingsales.Qty) End,0) As Yesterday, \\For Yesterday
这就是我想要的:
Date Item Amount Today Yesterday Accordingtodate
03/29/2019 1 100 100 80 100
03/28/2019 1 80 100 80 80
03/27/2019 1 50 100 80 50
今天和昨天应在每一行中显示相同的数据,而不考虑上表中的任何日期
该数据库是2002年使用SQL SERVER 2000创建的,我正在使用SQL SERVER 2017对其进行管理。某些函数和查询将不起作用
我的主要任务是根据表中的列名显示销售额和金额。像今天、昨天、上个月的生日等等。以上给出的表格只是我想做的一个例子。我们可以尝试使用
MAX
作为分析函数进行旋转:
SELECT
Date,
Amount,
MAX(CASE WHEN ReferenceDate = '03/29/2019'
THEN Qty END) OVER () AS Today,
MAX(CASE WHEN ReferenceDate = '03/23/2019'
THEN Qty END) OVER () AS Yesterday,
Accordingtodate
FROM Fact_dayclosingsales
ORDER BY
Date;
如果您使用的是不支持分析函数的非常旧的SQL Server版本,那么我们可以尝试改用子查询:
SELECT
Date,
Amount,
(SELECT Qty FROM Fact_dayclosingsales
WHERE ReferenceDate = '03/29/2019') AS Today,
(SELECT Qty FROM Fact_dayclosingsales
WHERE ReferenceDate = '03/28/2019') AS Yesterday,
Accordingtodate
FROM Fact_dayclosingsales
ORDER BY
Date;
我尝试使用Over(),但它给出了一个错误“关键字“Over”附近的语法不正确”。我想这是因为我使用的是sql server 2000(表库),而我目前使用的是sql server 2017。sql server 2000不支持Over。请编辑您的问题并显示干净的输入和输出,并确保列名与您的查询匹配。