使用 Group By 语句
Using the Group By statement
我正在尝试通过仅按 Symbol
和 region
分组在 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
我正在尝试通过仅按 Symbol
和 region
分组在 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