市县 南北位置 东西位置 [3小时W]海口 北部 东部 rain4red
海口 北部 西部 rain4red
海口 南部 西部 rain4red
白沙 东部 rain3orange
白沙 西部 rain3orange
保亭 北部 rain4red
保亭 南部 rain4red
昌江 东部 rain3orange说明:海口位置分为东北部、西北部、东南部、西南部
如果满足四个位置则为 全县 ,否则东北部、西北部 为北部, 东南部、西南部 为南部
如果南北位置为空,则北部、南部 为全县,如果东西位置为空,东部、西部 为全县想得到结果如果如下:市县 位置 [3小时W]
海口 北部、西南部 rain4red
白沙 全县 rain3orange
保亭 全县 rain4red
昌江 东部 rain3orange
海口 北部 西部 rain4red
海口 南部 西部 rain4red
白沙 东部 rain3orange
白沙 西部 rain3orange
保亭 北部 rain4red
保亭 南部 rain4red
昌江 东部 rain3orange说明:海口位置分为东北部、西北部、东南部、西南部
如果满足四个位置则为 全县 ,否则东北部、西北部 为北部, 东南部、西南部 为南部
如果南北位置为空,则北部、南部 为全县,如果东西位置为空,东部、西部 为全县想得到结果如果如下:市县 位置 [3小时W]
海口 北部、西南部 rain4red
白沙 全县 rain3orange
保亭 全县 rain4red
昌江 东部 rain3orange
-- -----------t_mac 小编-------------------
--------------------希望有天成为大虾----
-- =========================================IF OBJECT_ID('tb') IS NOT NULL
DROP TABLE tb
GO
CREATE TABLE tb( 市县 varchar(10),南北位置 varchar(10) ,东西位置 varchar(10) ,[3小时W] varchar(20))
go
insert tb SELECT
'海口', '北部' ,'东部' , 'rain4red'UNION ALL SELECT
'海口', '北部' , '西部' , 'rain4red' UNION ALL SELECT
'海口','南部' , '西部' , 'rain4red' UNION ALL SELECT
'白沙' , null,'东部' , 'rain3orange' UNION ALL SELECT
'白沙' , null,'西部' , 'rain3orange' UNION ALL SELECT
'保亭' ,'北部' ,null , 'rain4red'UNION ALL SELECT
'保亭','南部' ,null, 'rain4red' UNION ALL SELECT
'昌江' , null, '东部', 'rain3orange'
go
--这个是合并位置的函数(下面要合并位置)
create FUNCTION dbo.f_tb(@weizhi varchar(100))
RETURNS varchar(8000)
AS
BEGIN
DECLARE @str varchar(8000)
SET @str = ''
SELECT @str = @str + ',' + 位置 FROM kpo WHERE 市县=@weizhi
RETURN STUFF(@str, 1, 1, '')
END
go
select 市县,
位置=case when 南北位置='北部' and 东西位置='东部' then '东北部'
when 南北位置='北部' and 东西位置='西部' then '西北部'
when 南北位置='南部' and 东西位置='西部' then '西南部'
when 南北位置='南部' and 东西位置='东部' then '东南部'
when 南北位置 is null then 东西位置
when 东西位置 is null then 南北位置
end,
[3小时W] into #
from tb
--修改位置的代码
select
distinct 市县,
位置=case when 位置='东北部' then case when exists(select * from # where 位置='西北部' and k.市县=市县) then '北部' else '东北部' end
when 位置='西北部' then case when exists(select * from # where 位置='东北部'and k.市县=市县) then '北部' else '西北部' end
when 位置='西南部' then case when exists(select * from # where 位置='东南部'and k.市县=市县) then '南部' else '西南部' end
when 位置='东南部' then case when exists(select * from # where 位置='西南部'and k.市县=市县) then '南部' else '东南部' end
when 位置='东部' then case when exists(select * from # where 位置='西部'and k.市县=市县) then ' 全县' else '东部' end
when 位置='西部' then case when exists(select * from # where 位置='东部'and k.市县=市县) then ' 全县' else '西部' end
when 位置='南部' then case when exists(select * from # where 位置='北部'and k.市县=市县) then ' 全县' else '南部' end
when 位置='北部' then case when exists(select * from # where 位置='南部'and k.市县=市县) then ' 全县' else '北部' end
end,
[3小时W] into kpo
from # k-- 调用函数 合并结果select distinct
市县,
位置=dbo.f_tb(市县),
[3小时W]
from kpo
/*
市县 位置 3小时W
---------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------------------
白沙 全县 rain3orange
保亭 全县 rain4red
昌江 东部 rain3orange
海口 北部,西南部 rain4red*/
go