这个查询语句怎么写呀?求助 ~~o(>_<)o ~~

puzhichen 2012-03-27 11:05:42

CREATE TABLE #phoneNote
(
ID INT ,
PhoneNumber VARCHAR(11)
)

INSERT INTO #phoneNote(ID,[PhoneNumber])
(SELECT 1,'13800000001' UNION
SELECT 2,'13800000001' UNION
SELECT 3,'13800000002' UNION
SELECT 4,'13800000002' UNION
SELECT 5,'13800000002' UNION
SELECT 6,'13800000003' UNION
SELECT 7,'13800000004' UNION
SELECT 8,'13800000005')


希望得到的结果:
phoneNumber 总数
----------- -----------
13800000001 2
13800000002 3
13800000003 1
13800000001 2
13800000000 0

(5 行受影响)
...全文
257 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 q806294478 的回复:]

SQL code
declare @sql varchar(max)='13800000001,13800000002,13800000003,13800000001,13800000000'
declare @str xml
set @str=convert(xml,'<root><v>'+REPLACE(@sql,',','</v><v>')+'</v></root>')
select a……
[/Quote]

这个好,XML,学习了
五更琉璃 2012-03-27
  • 打赏
  • 举报
回复

CREATE TABLE #phoneNote
(
ID INT ,
PhoneNumber VARCHAR(11)
)

INSERT INTO #phoneNote(ID,[PhoneNumber])
(SELECT 1,'13800000001' UNION
SELECT 2,'13800000001' UNION
SELECT 3,'13800000002' UNION
SELECT 4,'13800000002' UNION
SELECT 5,'13800000002' UNION
SELECT 6,'13800000003' UNION
SELECT 7,'13800000004' UNION
SELECT 8,'13800000005')


CREATE TABLE #phoneNoteSearch
(
PhoneNumber VARCHAR(11)
)
INSERT INTO #phoneNoteSearch(PhoneNumber)
select '13800000001' union all
select '13800000002' union all
select '13800000003' union all
select '13800000001' union all
select '13800000000'


select PhoneNumber,(select count(*) from #phoneNote where #phoneNote.PhoneNumber=#phoneNoteSearch.PhoneNumber) as 总数 from #phoneNoteSearch

13800000001 2
13800000002 3
13800000003 1
13800000001 2
13800000000 0
q806294478 2012-03-27
  • 打赏
  • 举报
回复
declare @sql varchar(max)='13800000001,13800000002,13800000003,13800000001,13800000000'
declare @str xml
set @str=convert(xml,'<root><v>'+REPLACE(@sql,',','</v><v>')+'</v></root>')
select a.num,COUNT(b.PhoneNumber) from
(select ROW_NUMBER() over(order by getdate()) id,num=N.v.value('.','varchar(100)') from @str.nodes('/root/v')N(v)) a
left join #phoneNote b on a.num=b.PhoneNumber group by a.id,a.num
结果显示:
13800000000 0
13800000001 2
13800000001 2
13800000002 3
13800000003 1
Vidor 2012-03-27
  • 打赏
  • 举报
回复
declare @str varchar(8000) = '13800000001,13800000002,13800000003,13800000000'
select substring(@str, number*12+1, 11) from master..spt_values where type='P' and number between 0 and len(@str)/12
/*
----------------------
13800000001
13800000002
13800000003
13800000000
*/
Vidor 2012-03-27
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 puzhichen 的回复:]

引用 1 楼 vidor 的回复:

@str 有长度限制哦
只能输入几百个手机号码...
[/Quote]

我说个方法而已,事实上你都是11位的,用数字表substring(@str,number*12+1,11)辅助拆分不就可以了。
where number between 0 and len(@str)/12

总之输入字符串是要拆成行集。
SQL777 2012-03-27
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 travylee 的回复:]
中午试试写一个,感觉动态的实现不怎么好

引用 2 楼 puzhichen 的回复:

引用 1 楼 vidor 的回复:

SQL code
declare @str varchar(8000) = '13800000001,13800000002,13800000003,13800000000'
set @str = replace(@str, ',', ''' p union……
[/Quote]
不动态的实现也可以用拆分成一个表。再关联。思路差不多都这样
  • 打赏
  • 举报
回复
中午试试写一个,感觉动态的实现不怎么好
[Quote=引用 2 楼 puzhichen 的回复:]

引用 1 楼 vidor 的回复:

SQL code
declare @str varchar(8000) = '13800000001,13800000002,13800000003,13800000000'
set @str = replace(@str, ',', ''' p union all select ''')
exec('select p, cn=isnull(cn,……
[/Quote]
puzhichen 2012-03-27
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 vidor 的回复:]

SQL code
declare @str varchar(8000) = '13800000001,13800000002,13800000003,13800000000'
set @str = replace(@str, ',', ''' p union all select ''')
exec('select p, cn=isnull(cn,0) from (select '''+@st……
[/Quote]

@str 有长度限制哦
只能输入几百个手机号码...
Vidor 2012-03-27
  • 打赏
  • 举报
回复
declare @str varchar(8000) = '13800000001,13800000002,13800000003,13800000000'
set @str = replace(@str, ',', ''' p union all select ''')
exec('select p, cn=isnull(cn,0) from (select '''+@str + ''') a left join (select pn=PhoneNumber, cn=count(1) from #phoneNote group by PhoneNumber) b on p=pn')
/*
phoneNumber 总数
----------- -----------
13800000001 2
13800000002 3
13800000003 1
13800000001 2
13800000000 0
*/

34,837

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧