2017-07-31 56 views
1

好日子MS SQL数作为新列

我有我的表的问题和计数

TABLE1 
COLUMN1  COLUMN2 
3    jjd 
5    jd 
3    jjd 
4    kg 
5    jd 
48    gjh 
446   djj 
…    … 

我需要

TABLE1 
COLUMN1 COLUMN2 COLUMN3 
3   jj   2 
5   jd   2 
4   kg   1 
48  gjh  1 
446  djj  1 
...  ...  … 

荫做什么,但都不尽如人意。

SELECT * , COUNT(Column1) as column3 FROM TABLE1 

感谢您的帮助withh我计数

+5

提示:'GROUP BY'。 –

+2

建议:首先阅读收到的错误消息,然后在寻求帮助时发布这些消息。该错误消息几乎告诉你如何解决这个问题。 –

+0

[如何在相同的select语句中使用count和group]可能的重复(https://stackoverflow.com/questions/2722408/how-to-use-count-and-group-by-at-the-same - 选择语句) – scsimon

回答

0

尝试通过使用组由

SELECT COLUMN1 , 
     COLUMN2 , 
     COUNT(Column1) As COLUMN3 FROM cte_TABLE1 
    Group by COLUMN1 ,COLUMN2 
    Order by COLUMN1 

利用窗口函数

SELECT DISTINCT COLUMN1 , 
     COLUMN2 , 
     COUNT(Column1)OVER(Partition by COLUMN1,COLUMN2 ORder by COLUMN1) As COLUMN3 FROM cte_TABLE1 

结果

COLUMN1 COLUMN2 column3 
----------------------- 
3  jjd  2 
4  kg  1 
5  jd  2 
48  gjh  1 
446  djj  1 
0

使用GROUP BYORDER BYDESC将它们放在COUNT总订单中。

SELECT COLUMN1, COLUMN2, COUNT(Column1) AS COLUMN3 
FROM Table1 
GROUP BY COLUMN1, COLUMN2 
ORDER BY COUNT(Column1) DESC 

输出

COLUMN1 COLUMN2 COLUMN3 
5  jd  2 
3  jjd  2 
4  kg  1 
446  djj  1 
48  gjh  1 

SQL小提琴:http://sqlfiddle.com/#!6/89f49/4/0

0

使用OVER就可以达到很容易

SELECT COLUMN1 , 
     COLUMN2 , 
     COUNT(Column1)OVER(Partition by COLUMN1,COLUMN2 ORder by COLUMN1) As COLUMN3 FROM cte_TABLE1 
Group By COLUMN1,COLUMN2