使用 Group By 语句

Using the Group By statement

我正在尝试通过仅按 Symbolregion 分组在 SSRS 中部署 table,并且不想按贸易分组,因为我得到的结果不正确。我使用了以下代码:

SELECT Symbol, Region, Trade, SUM(Profit) AS Total
FROM dbo.[15 Mins]
GROUP BY Symbol 
HAVING SUM(Profit)<0

报告说 'dbo.15 Mins.Trade' 列在 select 列表中无效,因为它未包含在聚合函数或 GROUP BY 子句中。

好吧,我想要的是仅按符号对负和(利润)进行分组,然后说当我单击 SSRS 报告上的加号时,它会进一步向下钻取并显示详细数据:符号 - 区域 - 贸易- 每笔交易的利润。

例如

SYMBOL  REGION TRADE PROFIT

Apple   NYSE   BUY   100  
Apple   NYSE   BUY   -200
MSFT    NYSE   BUY   300
MSFT    NYSE   SELL  500

基本上我想要的 SSRS 是什么:

1) 获取总和(利润)为负的品种

SYMBOL  REGION TRADE SUM(Profit)
(+)Apple                -100  

在我按下 (+) 符号后,table 展开并显示以下内容:

SYMBOL  REGION TRADE SUM(Profit)
Apple   NYSE   BUY   100  
Apple   NYSE   BUY   -200
CREATE TABLE #a
(
    symbol VARCHAR(100),
    region VARCHAR(100),
    trade VARCHAR(100),
    profit int
)

INSERT INTO #a VALUES ('Apple',   'NYSE',   'BUY',   100  );
INSERT INTO #a VALUES ('Apple',   'NYSE',   'BUY',   -200);
INSERT INTO #a VALUES ('MSFT ',   'NYSE',   'BUY',   300);
INSERT INTO #a VALUES ('MSFT ',   'NYSE',   'SELL', 500);

SELECT a.symbol ,
       a.region ,
       a.trade ,
       a.profit,
       b.profit AS negative_profit
FROM #a a
JOIN (
SELECT b.symbol, SUM(b.profit) profit FROM #a b GROUP BY b.symbol HAVING  SUM(b.profit) < 0
) b
ON  a.symbol = b.symbol
;

这就是你想要的,不同地区不同行,buy/sell不同行:

SELECT Symbol, Region, Trade, SUM(Profit) AS Total
FROM dbo.[15 Mins]
GROUP BY Symbol, Region, Trade
HAVING SUM(Profit)<0