我有,我用得到的一些字段的項目計數的查詢:TSQL分組字段
SELECT (SUBSTRING(p.filename,5,9))AS pub,
COUNT(hc.queue)AS Hold,
COUNT(pff.queue)AS ppf,
FROM Preflight_Queue p
LEFT OUTER JOIN (SELECT status,COUNT(*)AS queue FROM Preflight_Queue WHERE status = 4 GROUP BY status)hc on hc.status= p.status
LEFT OUTER JOIN (SELECT status,COUNT(*)AS queue FROM Preflight_Queue WHERE status = 2 GROUP BY status)pff on pff.status= p.status
group by SUBSTRING(P.filename,5,9)
這給設定這樣的記錄:在一個單獨的表
pub Hold pff
RET-S0313 14 14
ABC-X0313 20 5
但是( Preflight_Status)我需要獲得兩個額外的字段(forecolor和backcolor)。
兩個表已根據論文關係的兩個字段:
preflight_queue.status = preflight_staus.id
SO我試圖執行以下操作:
SELECT(SUBSTRING(p.filename, 5,9))AS酒館,
COUNT(hc.queue)AS Hold,(hc.forecolor)as holdfc,(hc.backcolor) AS holdbc, COUNT(pff.queue)AS pff,(pff.forecolor)as pfffc,(pff.backcolor) AS pffbc FROM Preflight_Queue p LEFT OUTER JOIN ( SELECT p.status,s.forecolor,s.backcolor,COUNT(*)AS queue FROM Preflight_Queue p JOIN preflight_Status s on s.id = p.status WHERE p.status = 4 GROUP BY p.status,s.forecolor,s.backcolor )hc on hc.status= p.status LEFT OUTER JOIN ( SELECT p.status,s.forecolor,s.backcolor,COUNT(*)AS queue FROM Preflight_Queue p JOIN preflight_Status s on s.id = p.status WHERE p.status = 2 GROUP BY p.status,s.forecolor,s.backcolor )pff on pff.status= p.status group by SUBSTRING(P.filename,5,9),hc.forecolor,hc.backcolor,pff.forecolor,pff.backcolor
然而,因爲我現在必須將前景色和背景色組合在一起。我得到這個結果:
pub Hold pff holdfc holdbc pfffc pffbc RET-S0313 14 14 null null null null RET-S0313 null null 0x000000 0xFF99FF null null ABC-X0313 20 5 null null null null ABC-X0313 null null null null 0x000000 0xFFCCFF
什麼,我希望做的是擁有一切在同一行這樣的:
pub Hold pff holdfc holdbc pfffc pffbc RET-S0313 14 14 0x000000 0xFF99FF 0x000000 0x000000 ABC-X0313 20 5 0x000000 0xFF99FF 0x000000 0xFFCCFF
不知道如何取得一排?
在您的第一個查詢中,hc和pff的子查詢是相同的,它們都以相同的方式連接到p - 它們如何產生不同的結果? –
我的不好這是一個type'o感謝指出, – Mike