jestem uczących SQL i mam tabelę, w której istnieją pewne komórki z dwóch prefiksów tak:SQL jak sprawdzić prefiks w celi z dwóch prefiksów
example1(cell) : R:8days; U:5$;
example2(cell) : R:8days;
example3(cell) : U:5$;
Chcę sprawdzić na tej U:5$
po pierwszym prefiks, ponieważ wiem, jak sprawdzić prefiks R:8days;
. Muszę więc sprawdzić pod kątem U:5$
, a następnie utworzyć nową kolumnę w tabeli.
Mój kod wygląda następująco:
;with cte as (
select
Employer, AmountPayd, AmountPayd as Payd
from data
where TipeOfTransaction like 'Offline Prepaid%' AND Note like '%R:8%' **HERE I WANT TO CHECK FOR PREFIX NR2. 'U:5$' AND MAKE NEW COLUMN FOR WHICH EMPLOYER HAS U:5$ NOTE.**
)
select
Employer,
[4.00] = ISNULL([4.00],0)
,[5.00] = ISNULL([5.00],0)
,[9.00] = ISNULL([9.00],0)
,[10.00] = ISNULL([10.00],0)
,[15.00] = ISNULL([15.00],0)
,[Sum] =ISNULL([4.00],0) + ISNULL([5.00],0) + ISNULL([9.00],0) + ISNULL([10.00],0) + ISNULL([15.00],0)
from cte
pivot (
sum(AmountPayd) for Payd in ([4.00],[5.00],[9.00], [10.00], [15.00], [20.00]))pvt;
Technika trzeba nazywa podział łańcucha. Istnieje wiele pytań dotyczących [SO, które mogą pokazać, jak to zrobić] (http://stackoverflow.com/search?q=sql+string+splitter). Ale poleciłbym zamiast tego zmienić projekt stołu. Przechowywanie wielu wartości w jednej komórce jest złym pomysłem. Działa niezgodnie z zasadami projektowania, które stanowią podstawę SQL. Każda kolumna powinna być poświęcona jednemu celowi. –
Wiem o tym, ale zastanawiałem się tylko, czy mogę to zrobić tak, dziękuję za odpowiedź. – vidooo
Istnieje kilka różnych sposobów, aby to osiągnąć. Ale moim ulubionym jest używanie [tabeli] (http://www.sqlservercentral.com/blogs/dwainsql/2014/03/27/tally-tables-in-t-sql/). Te blogi mówią o podejściu: [SQL Server Central] (http://www.sqlservercentral.com/articles/Tally+Table/72993/) i [SQL Performance] (https://sqlperformance.com/2012/07/ t-sql-queries/split-string). –