本文介绍了如何在sql列中查找每个值的计数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述



这是我的查询的示例示例.

我的表格中有一列包含这样的价位
[专栏]
AS,BS
AS,CS
CS,ES
DE,AS
IR,CS,DE.

我需要找到每个值的计数,然后输出就会像这样
AS 5
BS 3
CS 4.

谁能帮我写程序


谢谢,
Anusha

Hi,

Here is a sample example for my query.

I have a column in my Table which contains valies like this
[Column]
AS,BS
AS,CS
CS,ES
DE,AS
IR,CS,DE.

I need to find the Count of each value and output shuld come like this
AS 5
BS 3
CS 4 .

can anyone help me to write a Procedure


Thanks,
Anusha

推荐答案

create table alphabet
(testword varchar(10)
)

insert into alphabet values('AS,BS')
insert into alphabet values('AS,CS')
insert into alphabet values('CS,ES')
insert into alphabet values('DE,AS')


alter Procedure [dbo].[asp_CommaSeparatedStringToTable]
AS
BEGIN
  declare @rownum as int
  DECLARE @String VARCHAR(10)
  DECLARE @StringInput VARCHAR(100)
  set @rownum =1
CREATE TABLE #temp1
(
   COL1 varchar(50),  
   rownum int, 
)
CREATE TABLE #temp2
(
   COL1 varchar(50),   
)
Insert into #temp1
  select testword,ROW_NUMBER() over (order by testword) as rowno from alphabet
  
  while (@rownum <=(select MAX(rownum) from #temp1))
  BEGIN
 
select @StringInput=COL1 from #temp1 where rownum=@rownum

    WHILE LEN(@StringInput) > 0
    BEGIN
        SET @String      = LEFT(@StringInput, 
                                ISNULL(NULLIF(CHARINDEX(',', @StringInput) - 1, -1),
                                LEN(@StringInput)))
        SET @StringInput = SUBSTRING(@StringInput,
                                     ISNULL(NULLIF(CHARINDEX(',', @StringInput), 0),
                                     LEN(@StringInput)) + 1, LEN(@StringInput))

        INSERT INTO  #temp2
        VALUES ( @String )
    END
    set @rownum=@rownum+1
    END
    
    select COUNT(1),col1 from #temp2 group by col1
     drop table #temp2
     drop table #temp1
END
GO

exec [asp_CommaSeparatedStringToTable]



我已经在存储过程中对表和列进行了硬编码.



I have hardcoded table and column inside stored procedure..


ColumnName
------
aa
aa
bb
bb
cc


那你会写:


Then you would write:

select ColumnName,Count(ColumnName) from tablename group by columnname


这就是为什么将多个数据项放在同一行(即"aa,bb")是一个坏主意的原因


That is why it is a bad idea to put multiple data items in a single row (i.e. "aa,bb")



这篇关于如何在sql列中查找每个值的计数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-28 05:16