2016-07-20 17 views
0

我在慢慢發現替換字符串不適用於通配符。我擁有的是大約10個SKU,這10個SKU每個都有大約20個SKU。SQL替換爲通配符

例子:_example - 父母SKU Example7bTL - 兒童SKU

結束 - 結果將是把所有孩子的SKU爲_example這樣我就可以得到一個乾淨的格式銷售量的總和。

我目前有什麼參考。

use test 


CREATE TABLE #test (
Test int, 
BillQty char(300)) 


select Quantity, REPLACE (SKU, '%EXAMP%', 'Example') As Sku 
from test.dbo.tblSFCOrderTxn 




drop table #Test 

Raw Data Example--- 

Quantity  SKU 
210   EXAMPLE7BOTL-C 
42    EXAMPLE4BOTL 
30    EXAMPLE1BOTL 
28    EXAMPLE12BOTL 
100   EXAMPLE7BOTL 
97    EXAMPLE4BOTL 
29    EXAMPLE7BOTL-C 

我想這是

Quantity  SKU 
536    _Example 

我使用SQL Server 2012的

+0

編輯你的問題,並提供樣本數據,所需的結果以及您正在使用的數據庫的標籤。一個SQL小提琴也可以是有幫助的。 –

回答

0

鑑於你的數據是什麼,只是用case

select (case when left(sku, 1) = '_' then '_Example' else sku end) 
0

不應該爲了做一個sum()而改變數據。我會去的:

SELELCT 
CASE WHEN SKU LIKE '%EXAMP%' THEN '_Example' ELSE SKU END AS SKU, 
SUM(Quantity) AS Quantity 
FROM test.dbo.tblSFCOrderTxn 
GROUP BY CASE WHEN SKU LIKE '%EXAMP%' THEN '_Example' ELSE SKU END 
ORDER BY 1 

如果你確實想改變的數據,這將是:

UPDATE test.dbo.tblSFCOrderTxn 
SET SKU = '_Example' 
WHERE SKU LIKE '%EXAMP%' 
0

這將是有益

SELECT SUM(Quantity),'_Example' AS SKU FROM test.dbo.tblSFCOrderTxn GROUP BY CASE SKU WHEN '1' THEN '1' ELSE '2' END