應用組得到計數我希望得到以下結果:SQL查詢通過
源表:
Cnt A B
4 ABC YU/FGH
5 ABC YU/DFE
5 ABC KL
2 LKP BN/ER
4 JK RE
結果:
Cnt A B
9 ABC YU
5 ABC KL
2 LKP BN
4 JK RE
在這裏,我想通過計數分組'B'並且只想顯示'B'記錄直到特殊字符(/)
應用組得到計數我希望得到以下結果:SQL查詢通過
源表:
Cnt A B
4 ABC YU/FGH
5 ABC YU/DFE
5 ABC KL
2 LKP BN/ER
4 JK RE
結果:
Cnt A B
9 ABC YU
5 ABC KL
2 LKP BN
4 JK RE
在這裏,我想通過計數分組'B'並且只想顯示'B'記錄直到特殊字符(/)
基本上,你將必須過濾出「/」符號後的所有字符,然後應用SUM
和GROUP BY
。你可以在下面看到。內部查詢過濾掉不需要的字符串和外部查詢是否SUM
和GROUP BY
:
SELECT SUM(t.Cnt), t.A, t.B
FROM (
SELECT Cnt,
A,
CASE
WHEN CHARINDEX('/', B) > 0 THEN SUBSTRING(B, 0, CHARINDEX('/', B))
ELSE B
END AS B
FROM #Tab
) t
GROUP BY t.A, t.B
ORDER BY t.A
你可以看到這方面的工作在這裏 - >http://rextester.com/IQJ79191
希望這有助於!
謝謝......它的工作:) – Abcdf
@Abcdf不客氣!如果這個答案有助於你解決你的問題,請將其標記爲答案,以便它可以幫助其他人偶然發現! –
你可以得到你的字符串直到'/'b y使用SUBSTRING。
select
count(SUBSTRING(reverse(B),0,charindex('/',reverse(B)))),
A,
SUBSTRING(reverse(B),0,charindex('/',reverse(B)))
from source_table group by B;
解甲骨文 - SUBSTR(B,0,INSTR(B, '/',1)-1)乙
將這個無論是在選擇和GROUPBY
我可以建議你使用這樣的查詢:
select
sum(Cnt) Cnt,
A,
left(B, charindex('/',B+'/',0)-1) B -- Using `+'\'` will do the trick
from
t
group by
A,
left(B, charindex('/',B+'/',0)-1);
通過使用字符串和CHARINDEX函數。
;WITH SourceTable(Cnt,A,B) AS
(
SELECT 4,'ABC','YU/FGH'UNION ALL
SELECT 5,'ABC','YU/DFE'UNION ALL
SELECT 5,'ABC','KL' UNION ALL
SELECT 2,'LKP','BN/ER' UNION ALL
SELECT 4,'JK','RE'
)
SELECT SUM(Cnt) AS Cnt,A,CASE WHEN CHARINDEX('/',B) = 0 THEN B
ELSE SUBSTRING(B,0,CHARINDEX('/',B)) END AS [B] FROM SourceTable
GROUP BY A,CASE WHEN CHARINDEX('/',B) = 0 THEN B
ELSE SUBSTRING(B,0,CHARINDEX('/',B)) END
ORDER BY Cnt DESC
嘗試此查詢 -
SELECT SUM(Cnt) AS [COUNT]
,A
,CASE
WHEN CHARINDEX('/', B) > 0
THEN SUBSTRING(B, 1, (CHARINDEX('/', B) - 1))
ELSE B
END
FROM tblSample
GROUP BY A, B
ORDER BY A, B
大。你試過什麼了? –
你正在使用哪個dbms? /總是第三個字符? – jarlh
SQL SERVER,沒有/可以是在任何地方 – Abcdf