我正在尝试将我的SQL语句转到:A。查看TrackingNumber列中的值是否包含' B',B。仅取出' B&#39前面的数字;,C。将原始行的COST列添加到行的COST中,其中值为B. =新行的出货编号,D。删除旧行。我不知道从哪里开始,除了我可能需要一个CASE语句。下面是一个包含预期结果的示例表。我怎么去做这样的任务?我知道" CASE当TrackingNumber = 1B4然后做某事"但这是否适用于在select语句中添加,减去和删除行?
|ShipmentNumber|COST|TrackingNumber|
|1 |20 |154 |
|2 |30 |1B3 |
|3 |10 |1B4 |
|4 |40 |567 |
所以我的新结果应该是
|ShipmentNumber|COST|TrackingNumber|
|1 |60 |154 |
|4 |40 |567 |
答案 0 :(得分:1)
如何做join
?对于您提供的数据和说明,我认为以下几乎是您想要的:
select t1.ShipmentNumber, max(t1.COST) + coalesce(sum(t2.COST)), t1.trackingnumber
from t t1 left join
t t2
on t2.trackingnumber like t1.ShipmentNumber + 'B%'
where t1.trackingnumber not like '%B%'
group by t1.ShipmentNumber, t1.trackingnumber;
答案 1 :(得分:0)
以下选项将为您提供跟踪号包含“B”的所有行:
Select * From tableName Where TrackingNumber Like '%B%' And TrackingNumber NOT Like 'B%'