繁体   English   中英

如何对SQL Server中的行进行计数

[英]How to do rows to column in SQL Server with count

如何在带有count的SQL中简单地切换带有列的行? 有什么办法吗? 实际上,我要与每个唯一的移动电话号码和产品名称并排排列,如果表中有两个移动电话号码,则计数= 2,并且这两个product1,product2并排显示在输出中。

即把这个结果:

Srno    Name| Mobile| Count  |  ProductName
1       xyz   1234       1       LNM
2       PQR   5678       1       VCD
3       xyz   1234       1       KLM
4       PQR   5678       1       NMG

到这个:

Srno    Name| Mobile| Count  |  ProductName1  | ProductName2 
1       xyz   1234       2       LNM              KLM
2       PQR   5678       2       VCD              NMG

如果您的product数量有限,则可以使用row_number()并进行条件聚合:

select min(srno) as srno, name, Mobile, count(*) as cnt,
       max(case when seq = 1 then ProductName end) as ProductName1,
       max(case when seq = 2 then ProductName end) as ProductName2
from (select t.*,
             row_number() over (partition by name, Mobile order by srno) as seq
      from table t
     ) t
group by name, Mobile;

尝试这个:

SET @row_number = 0;

SELECT 
    (@row_number:=@row_number + 1) AS Srno,
    T1.name,
    T1.Mobile,
    SUM(T1.xCount + T2.xCount) as cnt,
    max(T1.ProductName) as Product1,
    max(T2.ProductName) as Product2
FROM Table1 as T1
LEFT JOIN Table1 AS T2 ON T1.name = T2.name
                      AND T2.srno > T1.srno
GROUP BY T1.name, T1.Mobile
ORDER BY Srno

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM