在同一个表sql查询中联接2行
您是否有生成以下结果的查询在同一个表sql查询中联接2行,sql,sql-server,join,Sql,Sql Server,Join,您是否有生成以下结果的查询 name count 19 - Evening ACL 1130 21 - 14 - 16 Provision 585 81 - HE FT 458 85 - HE PT 233 我如何才能得到这样的结果,使查询连接两行,其中包含“HE”。我追求的结果是: name
name count
19 - Evening ACL 1130
21 - 14 - 16 Provision 585
81 - HE FT 458
85 - HE PT 233
我如何才能得到这样的结果,使查询连接两行,其中包含“HE”。我追求的结果是:
name count
19 - Evening ACL 1130
21 - 14 - 16 Provision 585
HE 691
这是我正在使用的查询
SELECT
vc.vc_name,
COUNT(DISTINCT s.s_studentreference) AS 'Count'
FROM
student s
INNER JOIN person p ON p.p_id = s.s_id
INNER JOIN moduleenrolment e ON e.e_student = p.p_id
INNER JOIN module m ON m.m_id = e.e_module
LEFT JOIN valid_codes vc ON vc.vc_code = m.m_mode AND vc.vc_domain = 'moa'
WHERE
LEFT(m.m_reference, 2) IN ('12')
GROUP BY
m.m_mode,
vc.vc_name
ORDER BY
m.m_mode,
vc.vc_name
谢谢您需要创建另一列,一个包含您想要加入的信息的计算列-即,在单独的列中提取该信息(他代表您的样本)
如果您有很多行,请考虑创建视图并在该列上添加索引(从而实现视图)以加快连接。
尝试此(假设“代码>”,他‘/CODE’在两边都有一个空间); 另一种方式是
select A.name, sum(A.count) as count
from (
select case charindex(' he ',name)
when 0 then name else 'HE' end name, count
from yourTable
) A
group by A.name
order by A.name
原始结果集中的“名称”列
仅仅是一个列还是一个通过连接数据生成的计算列
使用原力(就像绝地武士一样),我想说的是,它似乎将数字与描述以及字母PT、FT连接起来
如果是这样的话。。你必须在group子句中确定包含HE描述的两行中有什么不同。。。我打赌在第一个结果中给出字母“P”和“F”的同谋在group子句中。。。所以你应该通过..把他们从小组中剪掉。。看看他们是怎么做的。。。(在mySQL中,有命令组_CONCAT(),但在sqlserver中,我想仍然没有一个本机函数来实现这一点,但有许多技术可以实现这一结果)
但是这样你就可以得到线路了
81-85 HE PFT 691
如果您发布第一个结果集的查询,将有助于更好地理解您的问题并给出解决方案
无论如何。。如果不是这样的话,我不明白你为什么要把那两行一笔勾销。。但唯一的解决方案是确定哪些名称具有类似“他”的Kaf解决方案。您有多少行?它们的名字是什么?总共有18行,上面的代码部分只是一个示例,有两列,一个叫做name,另一个是count对不起,我是说列。我想到了列,但我写了行。你能给样本数据贴上标签吗?做一个案例陈述,挑出包含
HE
的行,然后按该行分组。谢谢你的回复,我已经用我正在使用的查询编辑了这篇文章。
select A.name, sum(A.count) as count
from (
select case charindex(' he ',name)
when 0 then name else 'HE' end name, count
from yourTable
) A
group by A.name
order by A.name