2016-07-01 11 views
0
SELECT SUBSTRING(day1,1)+'-'+SUBSTRING(Sum(day1 + day2)) AS day2 
    FROM DaysTable 
    WHERE day1 is Not null AND day2 is Not null 

Ich versuche, Werte aus zwei Spalten in der gleichen Tabelle und auch die beiden Spalten, die hinzufügen und auch die zwei Spalten, die als eine Spalte zurückgegeben werden. Auch möchte ich eine gestrichelte Linie zwischen dem results.So hinzufügen meine Ergebnisse wie diese 20-30Hinzufügen eines Bindestrichs in einer SQL-Abfrage

+0

Sieht so aus, als ob Sie einige Gussformen vermissen. Versuchen Sie, Ihre Substrings umzuwandeln: SUBSTRING (CAST (day1 als nvarchar (2)), 1) usw. ... – Xipooo

+0

Sie erwarten, eine Teilzeichenkette von etwas zu nehmen, das keine Zeichenkette ist? – Paparazzi

+0

Wenn 2012+, können Sie concat() anstelle von cast() verwenden –

Antwort

2

Wenn die Felder ganze Zahlen sind:

SELECT CAST(day1 AS VARCHAR(25))+'-'+CAST(day1+day2 AS VARCHAR(25)) 
FROM DaysTable 
WHERE day1 is Not null AND day2 is Not null 

Wenn sie Strings sind, könnten Sie die erste CAST() weglassen und würde eine CAST() um day1 hinzufügen müssen integer zusätzlich zu veran :

SELECT day1+'-'+CAST(CAST(day1 AS INT)+day2 AS VARCHAR(25)) 
FROM DaysTable 
WHERE day1 is Not null AND day2 is Not null 

Zahlen sollten nicht als Zeichenfolgen gespeichert werden, außer in Fällen, in denen keine Berechnungen an ihnen vorgenommen werden und/oder führende Nullen wie SSN/Telefonnummern/CPT-Codes beibehalten werden sollen.

Fyi: SUBSTRING() gibt einen Teil eines Strings (a ‚sub'set wenn man so will):

SELECT SUBSTRING('dog',1,2) 
-- Returns 'do', from the first character, take 2 characters. 

SUM() ist nicht für das Hinzufügen von Werten in der gleichen Zeile benötigt, sondern wird stattdessen verwendet, wenn Sie wollen um Werte aus mehreren Zeilen zu aggregieren. Zum Hinzufügen oder Verketten benötigen Sie nur + und ob die Verkettung oder Addition durch die dargestellten Datentypen bestimmt wird.

+0

Danke für den Tipp – Becca

0

aussehen wird versuchen, diese

SELECT SUBSTRING(CAST(day1 AS NVARCHAR(50)),1,2)+'-'+SUBSTRING(CAST(Sum(day1 + day2)AS NVARCHAR(50)),1,2) AS day2 
+0

Die 'substring()' s sind nicht notwendig. Ich denke nicht, dass wir annehmen können, dass die Werte zweistellig sind. – shawnt00

+0

Dies ist nur ein Beispiel, wir können die Länge von Substring anpassen oder verwenden die Substring-Funktion nicht wie in Ihrem Konzept. – taotechnocom

0

ich in das die ganze Zeit laufen, wenn ich versuche, Strings und Zahlen verketten , ein bisschen das gleiche Problem.

SUBSTRING erwartet eine Zeichenfolge, und ist nicht glücklich, dass Sie es eine ganze Zahl geben.

Konvertieren Sie also Ihre ganzen Zahlen in Zeichenfolgen, bevor Sie sie mit Zeichenfolgenoperationen ausführen.

Zum Beispiel:

SELECT SUBSTRING(CAST(day1 as varchar(2)),1) + '-' 
Verwandte Themen