Fhd*_*raf 4 sql sql-server asp.net grouping
我有3个表T1,T2,T3.他们每个人都与另一个人有关系.



SELECT T1.T1_Serno, T2.T2_Serno, T3.T3_Serno, T1.T1,COUNT( T3.T3_Serno) as Count_1, T2.T2, T3.T3, T3.Quantity
FROM T1 INNER JOIN
T2 ON T1.T1_Serno = T2.T1_Serno INNER JOIN
T3 ON T2.T2_Serno = T3.T2_Serno
GROUP BY T1.T1_Serno, T2.T2_Serno, T3.T3_Serno, T1.T1, T2.T2, T3.T3, T3.Quantity
Run Code Online (Sandbox Code Playgroud)
结果是

我想让Count_1告诉我有多少T3,而Count_2有相对的T3数量.我期待像这样的结果
T2 T3 Count_1 Count_2
Apple Apple1 3 80
Apple Apple2 3 80
Apple Apple3 3 80
-------
Google Google1 1 40
------
Nokia Nokia1 1 15
Run Code Online (Sandbox Code Playgroud)
因此,当我把它放在网格中时,我可以使用Counts作为页脚.像这样的东西,但每组之下的总数.

SELECT t2.t2,t3.t3,sum(t3.Quantity)
FROM T2 AS T2
INNER JOIN T3 AS T3 ON t3.t2_serno = t2.t2_serno
GROUP BY t2.t2,t3.t3
Run Code Online (Sandbox Code Playgroud)
实质上,您希望通过1个主要分组(t2)和1个次要分组(t3)对事物进行分组.因此,当您执行sql server时group by,它会在分组中创建分组(如果您有多个分组元素).最左边的分组元素将是主要分组,从左到右的读数将是子分组.这就是我的方式GROUP By t2.t2,t3.t3.
一旦我理解了你想要它如何分组,我就查看了列数量.您想要t3中数量列的总和.由于t3.t3是t2.t2的子组,因此sql server将列聚合应用于t3.t3子组的所有行,该子组已经由t2.t2分组分组.
TL; DR:sql server中的group by子句从左到右具有precendent,在分组中创建分组.如果将聚合应用于子组中的列,则聚合将神奇地(非常逻辑地,如果您了解sql引擎)适用于子组中的每个项目,并从每个新子组实例开始.
| 归档时间: |
|
| 查看次数: |
140 次 |
| 最近记录: |