Pokazywanie postów oznaczonych etykietą MSSQL. Pokaż wszystkie posty
Pokazywanie postów oznaczonych etykietą MSSQL. Pokaż wszystkie posty

04 czerwca 2021

[SQL] przykład kursora

 Przykład kursora w mssql:


DECLARE kursor CURSOR FOR
SELECT Ename, Sal FROM Emp WHERE Sal > 200
DECLARE @nazwisko VARCHAR(50), @pensja INT
PRINT 'Pracownicy o pensji wyższej niż 200:'
OPEN kursor 
FETCH NEXT FROM kursor INTO @nazwisko, @pensja 
WHILE @@FETCH_STATUS = 0
   BEGIN 
      PRINT @nazwisko + ' ' + Cast(@pensja As Varchar)
      FETCH NEXT FROM kursor INTO @nazwisko, @pensja 
   END 
CLOSE kursor 
DEALLOCATE kursor

06 sierpnia 2020

[MSSQL] Data ostatniego Backupu

Zapytanie przedstawiające datę ostatniego backupu:

SELECT @@SERVERNAME AS ServerName, sdb.Name AS DatabaseName, COALESCE(CONVERT(VARCHAR(12), MAX(bus.backup_finish_date), 101),'-') AS LastBackUpTime
FROM sys.sysdatabases sdb
LEFT OUTER JOIN msdb.dbo.backupset bus ON bus.database_name = sdb.name
GROUP BY sdb.Name

14 września 2019

[SQL] Kilka rekordów w jednym wierszu po przecinku

Poniżej znajduje się przykład zapytania SQL by móc wyświetlić kilka rekordów w jednym wierszu po przecinku.

SELECT STUFF(( SELECT ',' + elmt.value('.', 'nvarchar(max)') 
FROM ( SELECT ( 
/*YOUR QUERY HERE*/
 SELECT DISTINCT mag_kod FROM tab
/*--------------------*/
 FOR XML AUTO ,ELEMENTS XSINIL ,TYPE ) ) AS A(t) CROSS APPLY t.nodes('/*/*')
 AS B(elmt) FOR XML PATH('') ), 1, 1, '')
Działa to w MSSQL

05 listopada 2018

[MSSQL] Konwersja współrzędnych geograficznych na dziesiętne

Poniżej przykład konwersji współrzędnych geograficznych na współrzędne dziesiętne oraz na odwrót w mssql:

--konwersja ze stopni na  uklad dziesietny
DECLARE @sek FLOAT = 46.834
,@min FLOAT = 13
,@st FLOAT = 52
,@dec FLOAT
SET @dec = (@sek / 3600) + (@min / 60) + @st
SELECT @dec
--konwersja ukladu dziesietnego na uklad wsp geograficznych
SET @dec = 52.2296761111111
SET @st = ROUND(@dec, 0)
SET @min = floor((@dec - @st) * 60)
SET @sek = (@dec - @st - (@min / 60)) * 3600
SELECT @st 'st'
,@min 'min' --tutaj moze byc problem z zaokragleniami
,@sek 'sek'   --tutaj moze byc problem z zaokragleniami

17 stycznia 2015

[MSSQL]Pobranie losowej wartości z tabeli

Istnieje wiele sposobów, aby wybrać losowy zapis lub wiersz z tabeli bazy danych. Oto kilka przykładów SQL, które nie wymagają dodatkowej logiki aplikacji, ale każdy serwer bazy danych wymaga innej składni SQL. Poniższy przykład jest dla MSSQL:

SELECT TOP 1 column FROM table ORDER BY NEWID()

08 stycznia 2015

[MSSQL]Pobranie wartości parametru z XML

Poniżej przykład zastosowania wyciągnięcia wartości z parametru:

SELECT TOP 10 cast(cast(Wzorzec AS VARBINARY(max)) AS XML).query('.').value('(/barcodes/barcode/pages/page/@papername)[1]', 'varchar(40)')
 ,*
FROM SzablonyEtykiet
WHERE Wzorzec IS NOT NULL
 AND aktywny = 1
ORDER BY id DESC

23 czerwca 2014

[MSSQL]Użycie CTE - Common Table Expression

CTE – podstawy

CTE to nazwane zapytanie reprezentujące tymczasowy zestaw rekordów definiowany w zasięgu jednego polecenia SELECT, INSERT, UPDATE lub DELETE. Składniowo CTE przypomina podzapytanie w z języka Transact-SQL lub elementy obliczane z języka MDX.
Składnię CTE łatwo rozpoznać po charakterystycznym słowie WITH. Słowo to jest w języku Transact-SQL wykorzystywane między innymi do podawania wskazówek (ang. hint) dla optymalizatora lub do deklarowania przestrzeni nazw XML (klauzula WITH XMLNAMESPACES).

Sposób użycia:

USE AdventureWorks;
GO
WITH MojePierwszeCTE AS (
SELECT Name
FROM HumanResources.Department
)
SELECT * FROM MojePierwszeCTE;

Więcej na temat użycia CTE znajdziesz tutaj.

19 maja 2014

[MSSQL] Tworzenie kalendarza w SQL

Szukając rozwiązania utworzenia kalendarza w SQL-owym MSSQL znalazłem coś takiego:

IF EXISTS (SELECT * FROM information_schema.tables 
WHERE
Table_Name = 'Calendar' AND Table_Type = 'BASE TABLE') BEGIN DROP TABLE [Calendar] END CREATE TABLE [Calendar] ( [CalendarDate] DATETIME ) DECLARE @StartDate DATETIME DECLARE @EndDate DATETIME SET @StartDate = GETDATE() SET @EndDate = DATEADD(d, 365, @StartDate) WHILE @StartDate <= @EndDate BEGIN INSERT INTO [Calendar] ( CalendarDate ) SELECT @StartDate SET @StartDate = DATEADD(dd, 1, @StartDate) END

[MSSQL]Optymalizacja zapytań SQL

Mam nadzieję że spodoba wam się krótki filmik dotyczący optymalizacji SQL dla baz MSSQL prowadzącego przez pana Michała Maca.
Poniżej link do YouTube:

http://youtu.be/lxdDg2F0hfs

17 lipca 2013

[MSSQL] Generacja nazw obiektów do XML

Poniższy przykład przedstawia w jak prosty sposób można wygenerować plik XML z nazwami obiektów w BD.

Poniższy przykład znajduje się tutaj