【问题标题】:get sum of columns in next column sql获取下一列sql中的列总和
【发布时间】:2016-09-24 13:23:43
【问题描述】:

<table border="1">
  <tr><th>Pcode</th><th>TCode</th><th>TName</th><th>CCode</th><th>Rate</th><th>Total=sum(rates of all PCodes)</th></tr>
  <b><tr><td>12345</td><td>200</td><td>200</td><td>12</td><td>2000</td><td>8000</td></tr>
  <tr><td>12345</td><td>201</td><td>200</td><td>12</td><td>1000</td><td>8000</td></tr>
  <tr><td>12345</td><td>202</td><td>200</td><td>12</td><td>2000</td><td>8000</td></tr>
  <tr><td>12345</td><td>205</td><td>200</td><td>12</td><td>3000</td><td>8000</td></tr>
  <tr><td>12346</td><td>200</td><td>200</td><td>12</td><td>4000</td><td>32000</td></tr>
  <tr><td>12346</td><td>204</td><td>200</td><td>12</td><td>5000</td><td>32000</td></tr>
  <tr><td>12346</td><td>208</td><td>200</td><td>12</td><td>5000</td><td>32000</td></tr>
  <tr><td>12346</td><td>1235</td><td>200</td><td>12</td><td>3000</td><td>32000</td></tr>
  <tr><td>12346</td><td>12</td><td>200</td><td>12</td><td>7000</td><td>32000</td></tr>
  <tr><td>12346</td><td>100</td><td>200</td><td>12</td><td>8000</td><td>32000</td></tr>
  
</table>
<p>I have a table with Pcode, Tcode, TName, CCode, Rate. Need to find the sum under Pcode as Total in next column</p>

我希望获取此表列“(总计)”以及下表(SQL)中的所有列。

我已经尝试了 ROLLUP 和 group by 还没有解决方案。

按 Pcode 分组的总数并将该总和放入下一列。

TIA,

【问题讨论】:

  • 桌子在哪里?还请提供样本数据以及与该样本数据对应的所需输出。
  • 抱歉忘记添加html代码
  • 您还应该包含您尝试过的查询。看看这个:spaghettidba.com/2015/04/24/…

标签: sql group-by sql-server-2014 rollup


【解决方案1】:

您只需要使用GROUP BY。此解决方案使用公用表表达式(将 tempTable 替换为您的表名称):

;WITH TotalByPCode (PCode, Total) AS (
    SELECT PCode, SUM(Rate) FROM tempTable GROUP BY PCode
    )

SELECT R.PCode, R.TCode, R.TName, R.CCode, R.Rate, T.Total
FROM tempTable R JOIN TotalByPCode T ON R.PCode = T.PCode
;

【讨论】:

    【解决方案2】:
    With your_table_CTE as (
        select C.x,A.y,B.x from DFG inner join A, inner join B, inner join C
    )
    
    select a.pcode, a.TCode, a.TName, a.CCode, a.Rate, b.Total
    from your_table_CTE a
    join (
      select pcode, sum(rate) as Total
      from your_table_CTE
      group by pcode
    ) b
    on a.pcode = b.pcode
    

    【讨论】:

    • 这是正确的想法,但您还需要在子查询中使用 your_table 并将别名 sum(rate) 用作 Total 才能使其工作。
    • your_table 不仅仅是一个表,它是从具有内部连接的四个不同表中选择 *。 your_table = select C.x,A.y,B.x from DFG inner join A, inner join B, inner join C 所以your_table 是查询而不是表。
    • 您可以先在查询中使用公用表表达式。with your_table_CTE as (select C.x,A.y,B.x from DFG inner join A, inner join B, inner join C) select ...
    猜你喜欢
    • 2017-12-09
    • 2017-07-14
    • 2015-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-10
    • 1970-01-01
    相关资源
    最近更新 更多