如何获得用逗号分隔的逗号值?
我对SQL的工作,我有两个表如何获得用逗号分隔的逗号值?
EId Ename
1 john
2 alex
3 piers
4 sara
,第二个表是
PID PNAME EID
1 mcndd 1
2 carter 1
3 leare 2
4 jain 2
结果应该是
EID count PID
1 2 1
1 2 2
2 2 3
2 2 4
我要为this.i查询曾尝试过这样的
SELECT t1.EID, COUNT(t1.EID) count,PID
from Employertable t1
INNER JOIN persontable P ON P.EID=t1.EID
Group By t1.EID Having Count(T1.EID) > 1
你可以使用窗口功能来做到这一点。有了这些功能,您可以用非聚合数据合并汇总数据:
DECLARE @t1 TABLE (EID INT)
DECLARE @t2 TABLE (PID INT, EID INT)
INSERT INTO @t1
VALUES (1),
(2),
(3),
(4)
INSERT INTO @t2
VALUES (1, 1),
(2, 1),
(3, 2),
(4, 2)
SELECT *
FROM (SELECT t1.EID ,
COUNT(*) OVER (PARTITION BY t2.EID) AS C ,
t2.PID
FROM @t1 t1
JOIN @t2 t2 ON t2.EID = t1.EID
) t
WHERE t.C > 1
输出:
EID C PID
1 2 1
1 2 2
2 2 3
2 2 4
感谢回复@ Giorgi Nakeuri让我试试plz – 2015-04-06 08:00:32
hi @@ Giorgi Nakeuri,但我得到了不一样的结果,我用id 2 count = 14条记录,但结果返回84 – 2015-04-06 08:08:52
可以解释我关于“COUNT(*)OVER(由t2划分。 EID)AS C,“ – 2015-04-06 08:09:13
请阅读'join'和'组by'那些会给你,你的回答。 – 2015-04-06 05:56:42
感谢回复@marc_s我刚刚编辑我试过这样我得到的PID是无效的,不包含任何聚合函数 – 2015-04-06 07:48:48
当使用GROUP BY子句时,您的'SELECT'列表**中的每列必须是**或者由一个聚合('COUNT','SUM','AVG'等)处理,或者如果不是这种情况,它必须在** GROUP BY子句中提及**。所以在你的情况下,你**必须**使用'GROUP BY t1.EID,PID' - – 2015-04-06 07:52:11