当前位置: 代码迷 >> Sql Server >> sql 查询语句 查询出前5条数据,其他数据用其他表示
  详细解决方案

sql 查询语句 查询出前5条数据,其他数据用其他表示

热度:91   发布时间:2016-04-24 09:33:11.0
sql 查询语句 查询出前5条数据,其余数据用其他表示

我表中实际的数据
序号 goodsName       SumTotal  SumNumber                  PJ       XdUnitPrice
1        厅装可乐 138.00           30                  4.600000                    3
2        可乐            108.00           26                  4.153846             3
3       厅装雪碧 102.00           24                  4.250000             3
4       雪碧            48.00          16                  3.000000             3
5       水费            15.00           5                  3.000000             3
6       电费            12.00          4                   3.000000             3
7       液化气           12.00          4                   3.000000             3
8       房租            9.00          3                   3.000000             3

要得到的数据,其他这一行的数据时这样算的,
SumTotal=12+12+9
SumNumber=4+4+3/3  这是算平均值,所以需要除以3
PJ=3+3+3/3 这是算平均值,所以需要除以3
XdUnitPrice=3+3+3/3      这是算平均值,所以需要除以3
   

序号 goodsName       SumTotal  SumNumber                  PJ       XdUnitPrice
1        厅装可乐 138.00           30                  4.600000                    3
2        可乐            108.00           26                  4.153846             3
3       厅装雪碧 102.00           24                  4.250000             3
4       雪碧            48.00          16                  3.000000             3
5       水费            15.00           5                  3.000000             3
6       其他            33          11                  3                                  3

------解决思路----------------------
SELECT * FROM table1 WHERE 序号 <= 5
UNION ALL
SELECT 6,
       '其他',
       SUM(SumTotal),
       SUM(SumNumber),
       AVG(PJ),
       AVG(XdUnitPrice)
  FROM table1
 WHERE 序号 > 5

------解决思路----------------------

USE tempdb
GO

CREATE TABLE #TestTB
(
序号 INT,
GoodsName NVARCHAR(50),
SumTotal MONEY ,
SumNumber INT,
PJ FLOAT,
XdUnitPrice INT
)

INSERT INTO #TestTB (序号,goodsName,SumTotal,SumNumber,PJ,XdUnitPrice)
VALUES
(1,'厅装可乐',138.00,30,4.600000,3 ),
(2,'可乐',108.00,26,4.153846,3 ),
(3,'厅装雪碧',102.00,24,4.250000,3),
(4,'雪碧',48.00,16,3.000000,3 ),
(5,'水费',15.00,5,3.000000,3 ),
(6,'电费',12.00,4,3.000000,3),
(7,'液化气',12.00,4,3.000000,3 ),
(8,'房租',9.00,3,3.000000,3)

;WITH CTE AS(
SELECT TOP 5 序号 FROM #TestTB)
SELECT TOP 5 
a.序号,goodsName,SumTotal,SumNumber,PJ,XdUnitPrice
FROM #TestTB a
INNER JOIN CTE b ON a.序号 = b.序号
UNION ALL
SELECT MIN(序号)-1,'其它',SUM(SumTotal),SUM(SumNumber),AVG(PJ),AVG(XdUnitPrice)
FROM #TestTB a
WHERE NOT EXISTS(SELECT * FROM CTE WHERE 序号 = a.序号)

  相关解决方案