地区 城市 订单数量
====================
华北 北京 20
青岛 50
东北 黑龙江 30
大连 80
西南 昆明 20
====================
地区这一列如果下一列跟上一列地区相同,则不显示.
14 个解决方案
#1
isnull(地区,'')
#2
select 地区=case when 城市=(select top 1 城市 from tab where 地区=a.地区 order by 城市) then 地区 else '' end
,城市,订单数量
from tab a
order by 地区,城市
#3
create table tb(area varchar(10),city varchar(10),num int)
insert into tb select '华北' , '北京', 20
insert into tb select '华北' , '青岛', 10
insert into tb select '东北' , '黑龙江', 40
insert into tb select '东北' , '大连', 50
insert into tb select '西南' , '昆明', 30
select case when city=(select top 1 city from tb where area = T.area order by area) then area else '' end area,
city,num from tb T
/*
华北 北京 20
青岛 10
东北 黑龙江 40
大连 50
西南 昆明 30
*/
drop table tb
#4
create table cityInfo
(
region varchar(30),
city varchar(30),
productNum int
)
insert into cityInfo
select N'华北','北京', 20 union all
select N'华北','青岛', 50 union all
select N'东北','黑龙江', 30 union all
select N'东北','大连', 80 union all
select N'西南','昆明', 20
select region=case when city=(select top 1 city from cityInfo
where region=a.region ) then region else '' end
,city,productNum
from cityInfo a
结果
华北 北京 20
青岛 50
东北 黑龙江 30
大连 80
西南 昆明 20
#5
首先谢谢大家的关心,楼上几位大大的SQL语句我运行过还是不行,我发下我的表结构吧
订单ID int not null
地区 nvachar(40) null
城市 nvachar(40) null
订单数量我是count(订单ID)as'订单数量'
楼上各位大大能再帮我看看吗
订单ID int not null
地区 nvachar(40) null
城市 nvachar(40) null
订单数量我是count(订单ID)as'订单数量'
楼上各位大大能再帮我看看吗
#6
错误为:选择列表中的列 '订单.货主城市' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中。
#7
订单的数量在哪里个表.
#8
订单数量就是count(订单ID)as '订单数量'
#9
create table tb(area varchar(10),city varchar(10),num int)
insert into tb select '华北' , '北京', 20
insert into tb select '东北' , '黑龙江', 40
insert into tb select '东北' , '大连', 50
insert into tb select '西南' , '昆明', 30
insert into tb select '华北' , '青岛', 10
--select case when city=(select top 1 city from tb where area = T.area order by area) then area else '' end area,
-- city,num from tb T
select case when city=(select top 1 city from tb where area=T.area order by area) then area else '' end area,
city,num from tb T
/*
华北 北京 20
青岛 10
东北 黑龙江 40
大连 50
西南 昆明 30
*/
drop table tb 这样的顺序就出错了吧!不是通法!
#10
create table tb(area varchar(10),city varchar(10),num int,areaid int)
insert into tb select '华北' , '北京', 20 ,0
insert into tb select '华北' , '青岛', 10 ,0
insert into tb select '东北' , '黑龙江', 40 ,1
insert into tb select '东北' , '大连', 50 ,1
insert into tb select '西南' , '昆明', 30 ,2
insert into tb select '华北' , '石家庄', 10 ,0
--select case when city=(select top 1 city from tb where area = T.area order by area) then area else '' end area,
-- city,num from tb T
select case when city=(select top 1 city from tb where area=T.area order by area) then area else '' end area,
city,num from tb T order by areaid
/*
华北 北京 20
青岛 10
东北 黑龙江 40
大连 50
西南 昆明 30
*/
drop table tb
insert into tb select '华北' , '北京', 20 ,0
insert into tb select '华北' , '青岛', 10 ,0
insert into tb select '东北' , '黑龙江', 40 ,1
insert into tb select '东北' , '大连', 50 ,1
insert into tb select '西南' , '昆明', 30 ,2
insert into tb select '华北' , '石家庄', 10 ,0
--select case when city=(select top 1 city from tb where area = T.area order by area) then area else '' end area,
-- city,num from tb T
select case when city=(select top 1 city from tb where area=T.area order by area) then area else '' end area,
city,num from tb T order by areaid
/*
华北 北京 20
青岛 10
东北 黑龙江 40
大连 50
西南 昆明 30
*/
drop table tb
#11
还有没有高人解答啊 5555555555555 急死............
#12
DECLARE @a table
(
订单ID int not null ,
地区 nvarchar(40) null ,
城市 nvarchar(40) null
)
insert into @a
select 1,N'华北','北京' union all
select 2,N'华北','青岛' union all
select 3,N'华北','青岛' union all
select 4,N'东北','黑龙江' union all
select 5,N'东北','大连' union all
select 6,N'西南','昆明'
SELECT 地区=(CASE WHEN 城市=(
SELECT top 1 城市
FROM (
SELECT top 100 percent 地区,
城市,
count(1) 数量
FROM @a a
GROUP BY 地区,
城市
ORDER BY 地区)bb
WHERE 地区=aa.地区) then 地区
ELSE ''
END),
城市,
数量
FROM
(
SELECT top 100 percent 地区,
城市,
count(1) 数量
FROM @a a
GROUP BY 地区,
城市
ORDER BY 地区)aa
--result
/*地区 城市 数量
------------------------------ ------------------------------ -----------
东北 大连 1
黑龙江 1
华北 北京 1
青岛 2
西南 昆明 1
(所影响的行数为 5 行)
*/
#13
chuifengde 高人啊@!!!!!!!!!!令我高山仰止啊!!!结贴了````````
#14
select case when 城市 =
(select top 1 城市 from table where 地区 = a.地区 order by 城市)
then 地区 else ' ' end '地区', 城市, 数量 from
(select 地区, 城市, count(订单id) '数量' from table group by 地区, 城市 order by 地区, 城市) a
#1
isnull(地区,'')
#2
select 地区=case when 城市=(select top 1 城市 from tab where 地区=a.地区 order by 城市) then 地区 else '' end
,城市,订单数量
from tab a
order by 地区,城市
#3
create table tb(area varchar(10),city varchar(10),num int)
insert into tb select '华北' , '北京', 20
insert into tb select '华北' , '青岛', 10
insert into tb select '东北' , '黑龙江', 40
insert into tb select '东北' , '大连', 50
insert into tb select '西南' , '昆明', 30
select case when city=(select top 1 city from tb where area = T.area order by area) then area else '' end area,
city,num from tb T
/*
华北 北京 20
青岛 10
东北 黑龙江 40
大连 50
西南 昆明 30
*/
drop table tb
#4
create table cityInfo
(
region varchar(30),
city varchar(30),
productNum int
)
insert into cityInfo
select N'华北','北京', 20 union all
select N'华北','青岛', 50 union all
select N'东北','黑龙江', 30 union all
select N'东北','大连', 80 union all
select N'西南','昆明', 20
select region=case when city=(select top 1 city from cityInfo
where region=a.region ) then region else '' end
,city,productNum
from cityInfo a
结果
华北 北京 20
青岛 50
东北 黑龙江 30
大连 80
西南 昆明 20
#5
首先谢谢大家的关心,楼上几位大大的SQL语句我运行过还是不行,我发下我的表结构吧
订单ID int not null
地区 nvachar(40) null
城市 nvachar(40) null
订单数量我是count(订单ID)as'订单数量'
楼上各位大大能再帮我看看吗
订单ID int not null
地区 nvachar(40) null
城市 nvachar(40) null
订单数量我是count(订单ID)as'订单数量'
楼上各位大大能再帮我看看吗
#6
错误为:选择列表中的列 '订单.货主城市' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中。
#7
订单的数量在哪里个表.
#8
订单数量就是count(订单ID)as '订单数量'
#9
create table tb(area varchar(10),city varchar(10),num int)
insert into tb select '华北' , '北京', 20
insert into tb select '东北' , '黑龙江', 40
insert into tb select '东北' , '大连', 50
insert into tb select '西南' , '昆明', 30
insert into tb select '华北' , '青岛', 10
--select case when city=(select top 1 city from tb where area = T.area order by area) then area else '' end area,
-- city,num from tb T
select case when city=(select top 1 city from tb where area=T.area order by area) then area else '' end area,
city,num from tb T
/*
华北 北京 20
青岛 10
东北 黑龙江 40
大连 50
西南 昆明 30
*/
drop table tb 这样的顺序就出错了吧!不是通法!
#10
create table tb(area varchar(10),city varchar(10),num int,areaid int)
insert into tb select '华北' , '北京', 20 ,0
insert into tb select '华北' , '青岛', 10 ,0
insert into tb select '东北' , '黑龙江', 40 ,1
insert into tb select '东北' , '大连', 50 ,1
insert into tb select '西南' , '昆明', 30 ,2
insert into tb select '华北' , '石家庄', 10 ,0
--select case when city=(select top 1 city from tb where area = T.area order by area) then area else '' end area,
-- city,num from tb T
select case when city=(select top 1 city from tb where area=T.area order by area) then area else '' end area,
city,num from tb T order by areaid
/*
华北 北京 20
青岛 10
东北 黑龙江 40
大连 50
西南 昆明 30
*/
drop table tb
insert into tb select '华北' , '北京', 20 ,0
insert into tb select '华北' , '青岛', 10 ,0
insert into tb select '东北' , '黑龙江', 40 ,1
insert into tb select '东北' , '大连', 50 ,1
insert into tb select '西南' , '昆明', 30 ,2
insert into tb select '华北' , '石家庄', 10 ,0
--select case when city=(select top 1 city from tb where area = T.area order by area) then area else '' end area,
-- city,num from tb T
select case when city=(select top 1 city from tb where area=T.area order by area) then area else '' end area,
city,num from tb T order by areaid
/*
华北 北京 20
青岛 10
东北 黑龙江 40
大连 50
西南 昆明 30
*/
drop table tb
#11
还有没有高人解答啊 5555555555555 急死............
#12
DECLARE @a table
(
订单ID int not null ,
地区 nvarchar(40) null ,
城市 nvarchar(40) null
)
insert into @a
select 1,N'华北','北京' union all
select 2,N'华北','青岛' union all
select 3,N'华北','青岛' union all
select 4,N'东北','黑龙江' union all
select 5,N'东北','大连' union all
select 6,N'西南','昆明'
SELECT 地区=(CASE WHEN 城市=(
SELECT top 1 城市
FROM (
SELECT top 100 percent 地区,
城市,
count(1) 数量
FROM @a a
GROUP BY 地区,
城市
ORDER BY 地区)bb
WHERE 地区=aa.地区) then 地区
ELSE ''
END),
城市,
数量
FROM
(
SELECT top 100 percent 地区,
城市,
count(1) 数量
FROM @a a
GROUP BY 地区,
城市
ORDER BY 地区)aa
--result
/*地区 城市 数量
------------------------------ ------------------------------ -----------
东北 大连 1
黑龙江 1
华北 北京 1
青岛 2
西南 昆明 1
(所影响的行数为 5 行)
*/
#13
chuifengde 高人啊@!!!!!!!!!!令我高山仰止啊!!!结贴了````````
#14
select case when 城市 =
(select top 1 城市 from table where 地区 = a.地区 order by 城市)
then 地区 else ' ' end '地区', 城市, 数量 from
(select 地区, 城市, count(订单id) '数量' from table group by 地区, 城市 order by 地区, 城市) a