簡體   English   中英

如何在表格底部添加摘要行

[英]How to add a summary row at bottom of table

我想要一個顯示刷新日期的摘要行,Naics 代碼列中的空白,行業列中的“總計”標題,加權平均持續時間列的加權平均值,以及剩余每列的總和。

我曾嘗試使用 UNION ALL,但一直遇到問題。

SELECT DISTINCT 
    GETDATE() AS 'RefreshDate',
    NaicsID AS 'NAICS Code',
    NaicsName AS 'Industry',
    FORMAT(SUM(RemainingTerm * BaseRent)/SUM(BaseRent), 'N1') AS 'Weighted Average Duration',
    FORMAT(SUM(BaseRent), 'C0') AS 'Occupied Contract Rent',
    FORMAT(SUM(BaseRent)/(SELECT SUM(BaseRent) 
                          FROM dbo.data 
                          WHERE NextSpaceLeaseID IS NULL), 'P1') AS '% of Commercial Total Rent',
    FORMAT(SUM(SpaceLeaseArea), 'N0') AS 'Occupied SF',
    FORMAT(SUM(SpaceLeaseArea)/(SELECT SUM(SpaceLeaseArea) 
                                FROM dbo.data 
                                WHERE NextSpaceLeaseID IS NULL), 'P1') AS '% of Commercial Total SF'
INTO
    industryExposure
FROM 
    dbo.data
WHERE 
    NaicsID NOT LIKE '%[Legacy Lease]%' 
    AND NextSpaceLeaseID IS NULL
GROUP BY 
    NaicsID, NaicsName;

您可以為此使用GROUPING SETS GROUPING() function 告訴您列是否已分組。

進一步說明:

  • 您可以將兩個子查詢重構為一個CROSS JOIN 條件聚合可能更快,但我把它留給了你。
  • 目前還不清楚為什么你認為你需要DISTINCT ,因為無論如何你都在分組。
  • 除以子查詢值的兩列可能不會給出預期的結果,您可能需要以其他方式計算除法。 我沒有樣本數據和預期結果,所以我不知道您需要什么
  • 不要使用''引用列名,而是使用[]
SELECT
    GETDATE() AS RefreshDate,
    d.NaicsID AS [NAICS Code],
    CASE WHEN GROUPING(d.NaicsName) = 1 THEN 'Total' ELSE d.NaicsName END AS Industry,
    FORMAT(SUM(d.RemainingTerm * d.BaseRent) / SUM(d.BaseRent), 'N1') AS [Weighted Average Duration],
    FORMAT(SUM(d.BaseRent), 'C0') AS [Occupied Contract Rent],
    FORMAT(SUM(d.BaseRent) / v.Total, 'P1') AS [% of Commercial Total Rent],
    FORMAT(SUM(d.SpaceLeaseArea), 'N0') AS [Occupied SF],
    FORMAT(SUM(d.SpaceLeaseArea) / v.Total, 'P1') AS [% of Commercial Total SF]
INTO
    industryExposure
FROM 
    dbo.data d
CROSS JOIN (
    SELECT SUM(d2.SpaceLeaseArea) AS Total
    FROM dbo.data d2
    WHERE d2.NextSpaceLeaseID IS NULL
) v
WHERE 
    d.NaicsID NOT LIKE '%[Legacy Lease]%' 
    AND d.NextSpaceLeaseID IS NULL
GROUP BY GROUPING SETS (
    (d.NaicsID, d.NaicsName, v.Total),
    ()
);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM