gpt4 book ai didi

sql - 如何按行和列分组?

转载 作者:行者123 更新时间:2023-12-04 05:00:54 25 4
gpt4 key购买 nike

我找不到任何可以帮助我接近目标的问题/答案。我有下表check code on SQL Fiddle .

SITENAME RTYPE SEASON  CTRSTAT  CTRTYPE UNITS  STARTDATE  WKTYPE    INVSTAT
site1 T2B P null null 92 null FRSA_P Unsold
site1 T2B Pre null null 36 null FRSA_P Unsold
site1 T2B PRI null null 173 null FRSA_P Unsold
site1 T2B SPE null null 56 null FRSA_P Unsold
site1 T2B P Complete FRSA 2 2013-01-01 FRSA_P Sold
site1 T2B Pre Complete FRSA 2 2013-01-01 FRSA_P Sold
site1 T2B PRI Complete FRSA 2 2013-01-01 FRSA_P Sold
site1 T2B P Complete FRSA 1 2013-03-05 FRSA_P Sold
site1 T2B P Complete FRSA 3 2014-01-01 FRSA_P Sold
site1 T2B Pre Complete FRSA 4 2014-01-01 FRSA_P Sold
site1 T3B P null null 69 null FRSA_P Unsold
site1 T3B Pre null null 26 null FRSA_P Unsold
site1 T3B PRI null null 125 null FRSA_P Unsold
site1 T3B SPE null null 40 null FRSA_P Unsold
site1 T3B Pre Complete FRSA 2 2013-01-01 FRSA_P Sold
site1 T3B P Complete FRSA 1 2014-01-01 FRSA_P Sold
site1 T3B Pre Complete FRSA 2 2014-01-01 FRSA_P Sold

然后以某种方式获得如下图所示的报告。如果 InvStatus 未售出,则报告应返回 Unsold,否则返回 CTRSTAT。

Result after grouping by columns and rows with totals

请不要关注总计和总计,图像来自使用其他数据的 excel。只是为了获得所需结果的样本。

编辑:日期列对应于一整年,例如带有 2013-03-05 的列。属于 01/01/2013列。如果日期为空,则它们将转到显示的最后一年,在这种情况下 01/01/2014但可能是 2015 年 o 上次显示的任何时间段。

我尝试了几种不同的方法,使用 GROUP BY连同 GROUPINGSETS各种类型,但没有一个工作。 CUBEROLLUP没有用,或者至少我没有设法得到正确的结果。也许这是不可能的,至少不是简单的方法。

这是我尝试过的许多查询之一的示例,试图扭曲它以获得类似报告的内容,但仍然没有接近。
SELECT
sitename, rtype, season, ctrstat, ctrtype, SUM(units)
,startdate, invstat
FROM tt
GROUP BY
GROUPING SETS ((sitename,InvStat,ctrstat)
,(RType,ctrtype,season,startdate)
,()
)

编辑:也许应该更好地使用 SSRS 来完成这项任务?

最佳答案

正如您在编辑中提到的,我认为这样做我 SSRS 是要走的路。您可以使用矩阵轻松创建您正在寻找的报告。通过使用 SQL fiddle 中给出的数据,您可以快速获得如下所示的内容。

编辑:添加总值
enter image description here

enter image description here

关于sql - 如何按行和列分组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16165401/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com