我學習SQL和我有哪裏有一定的細胞與兩個前綴像這樣的表:SQL如何檢查細胞前綴的兩個前綴
example1(cell) : R:8days; U:5$;
example2(cell) : R:8days;
example3(cell) : U:5$;
我想後先檢查該U:5$
前綴,因爲我知道如何檢查前綴R:8days;
。所以我需要檢查U:5$
,然後在表中創建一個新列。
我的代碼如下所示:
;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;
您所需要的技術被稱爲字符串拆分。有很多問題[可以告訴你如何做到這一點](http://stackoverflow.com/search?q=sql+string+splitter)。但我會建議你改變你的餐桌設計。將多個值存儲在一個單元格中是一個壞主意。它違背了支持SQL的設計原則。每一欄應專注於一個目的。 –
我知道,但我只想知道我是否可以這樣做,謝謝你的回答。 – vidooo
有幾種不同的方法來實現這一點。但我個人最喜歡的是使用[理貨表](http://www.sqlservercentral.com/blogs/dwainsql/2014/03/27/tally-tables-in-t-sql/)。這些博客討論了這種方法:[SQL Server Central](http://www.sqlservercentral.com/articles/Tally+Table/72993/)和[SQL性能](https://sqlperformance.com/2012/07/ T-SQL查詢/分割字符串)。 –