Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在同一个表sql查询中联接2行_Sql_Sql Server_Join - Fatal编程技术网

在同一个表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