2013-01-23 94 views
0

嗨有一個查詢產生以下結果?在同一個表sql查詢中加入2行

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 

感謝

+0

你有多少行?他們的名字是什麼? –

+0

總共有18行上面的代碼段只是一個示例,有兩列,一個叫做名字,另一個是計數 – Will

+0

對不起,我的意思是列。我正在考慮列,但我寫了行。你可以標註樣本數據嗎? –

回答

1

試試這個(假設'HE'在任一側都有空間);

select name, count 
from yourTable where charindex(' he ',name)=0 
union 
select 'HE' name, sum(count) as count 
from yourTable where charindex(' he ',name)>0 

另一種方式是;

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 
0

查詢您需要創建另一列,你想加入信息計算列即 - 在單獨的列中提取該信息(HE用於您的樣本)。

如果您有很多行考慮創建一個視圖並在該列上添加一個索引(從而實現視圖)來加速聯接。

1

在原始ResultSet 列「名」只是一個列或它通過連接數據的計算列構建?

使用武力(如絕地),我會說,這似乎是串聯與描述的數字和字母PT,FT ...

,如果是這樣的話..ü一定要在組句子中確定包含HE描述的兩行中的不同之處......我敢打賭,在第一個結果中給出字母「P」和「F」的列表在組條件中......所以你應該切(在mySQL中有命令GROUP_CONCAT(),但在sqlserver中,我仍然沒有一個本地函數來做到這一點,但有很多技術來獲得這個結果)

但以這種方式,你會得到行

81 - 85 HE PFT 691

,如果你發佈第一結果集的查詢,將有助於更好地瞭解您的問題給解決

反正..如果這不是案例我不明白爲什麼你應該想在這兩個行中聚合..但唯一的解決方案將確定哪些名稱有'HE'像Kaf解決方案。

+0

感謝您的回覆,我已使用我正在使用的查詢編輯帖子。 – Will

+0

valid_codes是一個視圖?或一張桌子? vc_name是計算? – Frederic