首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

求和的sql

2012-01-18 
求一个求和的sql表中数据如下idShopCountregionofficecityarea437山东日照办日照三庄4244山东日照办日照涛

求一个求和的sql
表中数据如下
    id     ShopCount     region         office         city         area
    43     7                     山东             日照办         日照         三庄
    42     44                   山东             日照办         日照         涛雒
    41     8                     山东             日照办         日照         西湖
    51     127                 山东             潍坊办         潍坊         潍坊城区1
    52     185                 山东             潍坊办         潍坊         潍坊城区2
    53     188                 山东             潍坊办         潍坊         潍坊城区3
    56     174                 山东             潍坊办         诸城         乡镇东线
    55     138                 山东             潍坊办         诸城         乡镇西线
    54     394                 山东             潍坊办         诸城         诸城城区
    75     104                 河北           石家庄办       石家庄     桥东区
    73     66                   河北           石家庄办       石家庄     桥西中山路北
    74     36                   河北           石家庄办       石家庄     桥西中山路南
    76     106                 河北           石家庄办       石家庄     石家庄直属        


查询结果
    id     ShopCount     region         office         city         area                       RegionCount         OfficeCount         CityCount
    43     7                     山东             日照办         日照         三庄                       1265                       59                           59                


    42     44                   山东             日照办         日照         涛雒                       1265                       59                           59
    41     8                     山东             日照办         日照         西湖                       1265                       59                           59
    51     127                 山东             潍坊办         潍坊         潍坊城区1             1265                       1206                       500                                
    52     185                 山东             潍坊办         潍坊         潍坊城区2             1265                       1206                       500
    53     188                 山东             潍坊办         潍坊         潍坊城区3             1265                       1206                       500
    56     174                 山东             潍坊办         诸城         乡镇东线               1265                       1206                       706                        
    55     138                 山东             潍坊办         诸城         乡镇西线               1265                       1206                       706  
    54     394                 山东             潍坊办         诸城         诸城城区               1265                       1206                       706  


    75     104                 河北             石家庄办     石家庄     桥东区                   312                         312                         312              
    73     66                   河北             石家庄办     石家庄     桥西中山路北       312                         312                         312
    74     36                   河北             石家庄办     石家庄     桥西中山路南       312                         312                         312
    76     106                 河北             石家庄办     石家庄     石家庄直属           312                         312                         312

[解决办法]
Select
*,
(Select SUM(ShopCount) From 表 Where region = A.region) As RegionCount,
(Select SUM(ShopCount) From 表 Where office = A.office) As RegionCount,
(Select SUM(ShopCount) From 表 Where city = A.city) As RegionCount
From
表 A
[解决办法]

declare @ta table(id int,ShopCount int, region varchar(5),office varchar(10),city varchar(10),area varchar(20))
insert @ta select 43, 7, '山东 ', '日照办 ', '日照 ', '三庄 '
insert @ta select 42, 44, '山东 ', '日照办 ', '日照 ', '涛雒 '
insert @ta select 41, 8, '山东 ', '日照办 ', '日照 ', '西湖 '
insert @ta select 51, 127, '山东 ', '潍坊办 ', '潍坊 ', '潍坊城区1 '
insert @ta select 52, 185, '山东 ', '潍坊办 ', '潍坊 ', '潍坊城区2 '
insert @ta select 53, 188, '山东 ', '潍坊办 ', '潍坊 ', '潍坊城区3 '
insert @ta select 56, 174, '山东 ', '潍坊办 ', '诸城 ', '乡镇东线 '
insert @ta select 55, 138, '山东 ', '潍坊办 ', '诸城 ', '乡镇西线 '
insert @ta select 54, 394, '山东 ', '潍坊办 ', '诸城 ', '诸城城区 '
insert @ta select 75, 104, '河北 ', '石家庄办 ', '石家庄 ', '桥东区 '
insert @ta select 73, 66, '河北 ', '石家庄办 ', '石家庄 ', '桥西中山路北 '
insert @ta select 74, 36, '河北 ', '石家庄办 ', '石家庄 ', '桥西中山路南 '
insert @ta select 76, 106, '河北 ', '石家庄办 ', '石家庄 ', '石家庄直属 '

select *,
RegionCount=(select sum(shopcount) from @ta where region=a.region),


OfficeCount=(select sum(shopcount) from @ta where office=a.office),
OfficeCount=(select sum(shopcount) from @ta where city=a.city)
from @ta a


(1 行受影响)

(1 行受影响)

(1 行受影响)

(1 行受影响)

(1 行受影响)

(1 行受影响)

(1 行受影响)

(1 行受影响)

(1 行受影响)

(1 行受影响)

(1 行受影响)

(1 行受影响)

(1 行受影响)
id ShopCount region office city area RegionCount OfficeCount OfficeCount
----------- ----------- ------ ---------- ---------- -------------------- ----------- ----------- -----------
43 7 山东 日照办 日照 三庄 1265 59 59
42 44 山东 日照办 日照 涛雒 1265 59 59
41 8 山东 日照办 日照 西湖 1265 59 59
51 127 山东 潍坊办 潍坊 潍坊城区1 1265 1206 500
52 185 山东 潍坊办 潍坊 潍坊城区2 1265 1206 500
53 188 山东 潍坊办 潍坊 潍坊城区3 1265 1206 500
56 174 山东 潍坊办 诸城 乡镇东线 1265 1206 706
55 138 山东 潍坊办 诸城 乡镇西线 1265 1206 706
54 394 山东 潍坊办 诸城 诸城城区 1265 1206 706
75 104 河北 石家庄办 石家庄 桥东区 312 312 312
73 66 河北 石家庄办 石家庄 桥西中山路北 312 312 312
74 36 河北 石家庄办 石家庄 桥西中山路南 312 312 312
76 106 河北 石家庄办 石家庄 石家庄直属 312 312 312

(13 行受影响)


[解决办法]
Create Table 表
(idInt,
ShopCountInt,
regionNvarchar(10),
officeNvarchar(20),
cityNvarchar(30),
areaNvarchar(30))
Insert 表 Select 43, 7, N '山东 ', N '日照办 ', N '日照 ', N '三庄 '
Union All Select 42, 44, N '山东 ', N '日照办 ', N '日照 ', N '涛雒 '
Union All Select 41, 8, N '山东 ', N '日照办 ', N '日照 ', N '西湖 '
Union All Select 51, 127, N '山东 ', N '潍坊办 ', N '潍坊 ', N '潍坊城区1 '
Union All Select 52, 185, N '山东 ', N '潍坊办 ', N '潍坊 ', N '潍坊城区2 '
Union All Select 53, 188, N '山东 ', N '潍坊办 ', N '潍坊 ', N '潍坊城区3 '
Union All Select 56, 174, N '山东 ', N '潍坊办 ', N '诸城 ', N '乡镇东线 '
Union All Select 55, 138, N '山东 ', N '潍坊办 ', N '诸城 ', N '乡镇西线 '
Union All Select 54, 394, N '山东 ', N '潍坊办 ', N '诸城 ', N '诸城城区 '
Union All Select 75, 104, N '河北 ', N '石家庄办 ', N '石家庄 ', N '桥东区 '
Union All Select 73, 66, N '河北 ', N '石家庄办 ', N '石家庄 ', N '桥西中山路北 '
Union All Select 74, 36, N '河北 ', N '石家庄办 ', N '石家庄 ', N '桥西中山路南 '
Union All Select 76, 106, N '河北 ', N '石家庄办 ', N '石家庄 ', N '石家庄直属 '


GO
Select
*,
(Select SUM(ShopCount) From 表 Where region = A.region) As RegionCount,
(Select SUM(ShopCount) From 表 Where office = A.office) As RegionCount,
(Select SUM(ShopCount) From 表 Where city = A.city) As RegionCount
From
表 A
GO
Drop Table 表
--Result
/*
idShopCountregionofficecityareaRegionCountOfficeCountCityCount
437山东日照办日照三庄12655959
4244山东日照办日照涛雒12655959
418山东日照办日照西湖12655959
51127山东潍坊办潍坊潍坊城区112651206500
52185山东潍坊办潍坊潍坊城区212651206500
53188山东潍坊办潍坊潍坊城区312651206500
56174山东潍坊办诸城乡镇东线12651206706
55138山东潍坊办诸城乡镇西线12651206706
54394山东潍坊办诸城诸城城区12651206706
75104河北石家庄办石家庄桥东区312312312
7366河北石家庄办石家庄桥西中山路北312312312
7436河北石家庄办石家庄桥西中山路南312312312
76106河北石家庄办石家庄石家庄直属312312312
*/

[解决办法]
別名寫錯了

Select
A.*,
(Select SUM(ShopCount) From 表 Where region = A.region) As RegionCount,
(Select SUM(ShopCount) From 表 Where office = A.office) As OfficeCount,
(Select SUM(ShopCount) From 表 Where city = A.city) As CityCount
From
表 A

热点排行
Bad Request.