2016-07-20 7 views
0

Ich finde langsam heraus, dass die Ersetzung Zeichenfolge mit Wildcards nicht funktioniert. Was ich habe, ist ca. 10 SKUs, diese 10 SKUs haben jeweils ca. 20 Unter-SKUs.SQL Ersetzen durch Platzhalter

Beispiel: _Example - Mutter SKU Example7bTL - Kinder SKU

-Ende Ergebnis wäre, alle Kind SKUs in _Example drehen, so kann ich eine Summe von Einheiten in einem sauberen Format verkauft bekommen.

was ich derzeit als Referenz habe.

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 

Was ich will, es

Quantity  SKU 
536    _Example 

ich sein bin mit SQL Server 2012

+0

bearbeiten und Beispieldaten liefern , gewünschte Ergebnisse und ein Tag für die von Ihnen verwendete Datenbank. Eine SQL Fiddle kann auch hilfreich sein. –

Antwort

0

Angesichts Ihrer Daten, benutzen Sie einfach case:

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

Sollte Daten nicht ändern, nur um eine Summe() zu tun. Ich würde mit:

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 

Wenn Sie die Daten wirklich wollen ändern, wäre es:

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

Es wäre hilfreich, Ihre Frage

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