Kontakt

Nutzen Sie dieses Kontaktformular oder schreiben Sie mir direkt per E-Mail.

Jan Trummel - Power BI Experte

Stellen Sie mir Ihre Frage zu
SQL in SQL Server!

Q&A – Fragen und Antworten rund um SQL in SQL Server

Stellen Sie mir hier Ihre Fragen zu SQL-Abfragen in Microsoft SQL Server oder anderen Datenbanken. Senden Sie mir Ihre Frage einfach per E-Mail an frage@jantrummel.de.

Ich werde alle Fragen selbstverständlich anonymisiert veröffentlichen, sodass keine Rückschlüsse auf Sie, Ihr Unternehmen oder Ihre Daten gezogen werden können.

Dieser Service ist für Sie kostenfrei!

Fragen aus dem April 2024

Frage zu meinem Video "Tutorial Gespeicherte Prozeduren im MS SQL Server" auf YouTube

Frage vom 10.04.2024

Hi Herr Trummel, wie kann ich bearbeitete gespeicherte Prozeduren speichern?

Antwort

Gehen wir einmal davon aus, dass ich diese Prozedur erstellt habe:

CREATE PROCEDURE uspPersonen
	@varLastName VARCHAR(50)
AS
SELECT *
FROM [Person].[Person]
WHERE [LastName] LIKE @varLastName;

Nun fällt mir auf, dass ich in der WHERE-Klausel beim LIKE die Prozentzeichen vergessen habe. Ohne die Prozentzeichen kann ich keine ungefähre Suche durchführen. Ich müsste den Nachnamen (LastName) genauso eingeben, wie er in der Tabelle steht.

Ich will die Prozedur nun ändern. Dafür ändere ich das Schlüsselwort CREATE ganz am Anfang des Anweisung um in ein ALTER. Dadurch wird der Code zu einer Änderungsanweisung:

ALTER PROCEDURE uspPersonen
	@varLastName VARCHAR(50)
AS
SELECT *
FROM [Person].[Person]
WHERE [LastName] LIKE '%' + @varLastName + '%';

Ich führe den Code nun noch mit F5 aus und schon ist die Prozedur geändert.


Fragen aus dem August 2023

Abfrage auf anderen SQL Server

Frage vom 28.08.2023

Kann man in einem SQL-Befehl auf Datenbanken in anderen SQL Servern zugreifen?

Antwort

Ich habe ein wenig recherchiert und herausgefunden, dass dies über sogenannte Verbindungserver möglich ist.
Hier ein Auszug aus der Microsoft Hilfe:

Mithilfe von Verbindungsservern können SQL Server-Datenbank-Engine und Verwaltete Azure SQL-Instanz Daten aus Remotedatenquellen lesen und Befehle für Remotedatenbankserver (z. B. OLE DB-Datenquellen) außerhalb der Instanz von SQL Server ausführen. Normalerweise werden Verbindungsserver so konfiguriert, dass die Datenbank-Engine eine Transact-SQL-Anweisung ausführen kann, die Tabellen in einer anderen Instanz von SQL Server oder einem anderen Datenbankprodukt wie Oracle enthält. Viele Typen von OLE DB-Datenquellen können als Verbindungsserver konfiguriert werden, darunter Datenbank-Drittanbieter und Azure Cosmos DB.

Microsoft. Verbindungsserver (Datenbank-Engine). https://learn.microsoft.com/de-de/sql/relational-databases/linked-servers/linked-servers-database-engine?view=sql-server-ver16 Abgerufen am 02.09.2023

Der Zugriff erfolgt, wenn der Verbindungserver eingerichtet ist, über einen 4-teiligen Namen in folgender Form:

SELECT name FROM [SRVR002\ACCTG].master.sys.databases;  

Bezüglich der Windows-Authentifizierung habe ich über ChatGPT folgendes herausgefunden:

Wenn Sie Windows-Authentifizierung verwenden, stellen Sie sicher, dass das Konto, unter dem Sie angemeldet sind, Zugriff auf beide Server hat. Bei der Einrichtung des verknüpften Servers können Sie angeben, welche Art von Authentifizierung verwendet werden soll.

ChatGPT. Frage gestellt am 02.09.2023

Fragen aus dem März 2023

SQL Unterabfrage Probl

Hallo Herr Trummel

ich hoffe es geht Ihnen gut.

Sehr wahrscheinlich haben wir die folgende frage bereits in ihrem Kurs Anfang des letzten Jahres gehabt. Ich habe folgendes Problem:

Ich möchte aus der Datenbank ... zusätzlich zu den bereits angezeigten Zahlen aus Monat 1 bis 12 noch zusätzlich als eigene Spalte die entsprechenden Amount_Balance aus Monat 0 (EB/SALDO).

Hier das Beispiel wie wir es bisher händisch in EXCEL erstellt haben.

KontoKonto BezeichnungEB/SALDOSollsaldoHabensaldoSaldo
503014xxxx6733248,420,000,006733248,42
503016xxxx228950,06115706,84115706,84228950,06

Antwort

Gehen Sie von folgenden Daten in der Tabelle Buchhaltung aus:

Tabelle "Buchhaltung" in MS SQL Server mit mehreren Spalten
Tabelle "Buchhaltung"

Ich nutze jeweils 2 Unterabfragen, die ich über einen INNER JOIN verbinde.

In der Unterabfrage Daten filtere ich auf die Monate 1 - 12.

In der Unterabfrage Monat_0 filtere ich auf den Monat 0. Aus dieser frage ich nur die Spalte Saldo ab.

Die Abfragen verbinde ich jeweils über die KontoNr.

SELECT 
	Daten.KontoNr, Daten.Konto, Daten.Soll, Daten.Haben, Daten.Saldo,
	Monat_0.Saldo AS 'EB/SALDO'
FROM  
(
	SELECT
		KontoNr,
		Konto,
		SUM(Soll) AS Soll,
		SUM(Haben) AS Haben,
		SUM(Saldo) AS Saldo
	FROM 
		Buchhaltung
	WHERE
		Jahr = 2022 AND
		Monat BETWEEN 1 AND 12
	GROUP BY
		KontoNr, Konto
) AS Daten
INNER JOIN
(
	SELECT
		KontoNr,
		Konto,
		SUM(Saldo) AS Saldo
	FROM 
		Buchhaltung
	WHERE
		Jahr = 2022 AND
		Monat = 0
	GROUP BY
		KontoNr, Konto
) AS Monat_0
ON 
	Monat_0.KontoNr = Daten.KontoNr
ORDER BY
	Daten.Konto;

Hinweis: SQL-Code stammt von MS SQL Server.

Hier das Abfrageergebnis:

Abfrageergebnis mit der Spalte "EB/SALDO" in MS SQL Server
Abfrageergebnis mit der Spalte "EB/SALDO"