Bir dizeden bazı değerleri SUM yapmaya çalışıyorum ama çalışmayı başaramıyorum. Ben SUM yorum yaparsanızSQL - SUM ile SUBSTRING
SELECT
P.NOME
,ISNULL(SUM(VPL.QTD),0) as TQTD
,CAST(LEFT(SUBSTRING(P.NOME, PATINDEX('%[0-9]%', P.NOME), LEN(P.NOME)),2) AS INT)
,SUM(CAST(LEFT(SUBSTRING(P.NOME, PATINDEX('%[0-9]%', P.NOME), LEN(P.NOME)),2) AS INT)) * ISNULL(SUM(VPL.QTD),0)
FROM Tabela1 as P
GROUP BY P.NOME
Ben bu olsun: Ayrıca
"Conversion failed when converting the varchar value 'Ga' to data type int."
:
Ama bu olsun CAST ve VPL.QTD özetlemek çalıştığınızda Bu altyazı SUBSTRING(P.NOME, PATINDEX('%[0-9]%', P.NOME), LEN(P.NOME)
, 13 kgs
Microsoft Sql Server kullanıyorum
ilk CAST aynı mesajı döndürür: tüm isimler her zaman iki komşu basamak varsa daha iyi bir çözümdür. İkincisi işe yaramıyor çünkü daha eski bir versiyon kullanıyorum. Üçüncüsü, bir bitmeden önce eksik. *) Ama sonra şu mesajı alıyorum: "Değişken varchar değeri '2,' veri türü int'ye dönüştürülürken başarısız oldu." – Enato
@Enato. . . İlk çalışmalı. İki rakamı bir tam sayıya dönüştürüyorsunuz ve ilk iki rakamın ilk oluşumunu bulmalısınız. –
ilk seçenek iyi görünüyor, aksi halde dizede 2 basamaklı bir sayı yoksa, Dönüşüm başarısız ... mesajı ile başarısız olur. –