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

23 sierpnia 2019

[CMD] URUCHAMIANIE POLECENIA W OKRESLONYCH GODZINACH

za pomocą linii poleceń można uruchomić polecenie tylko o okreslonym przedziale godzinowym:

przykład poniżej:
więcej informacji można znaleźć na stronie: Windows Command Line
@ECHO OFF
SET hour=%time:~0,2%
IF %hour% GEQ 9 IF %hour% LEQ 12 (GOTO RUNIT)

ECHO Wrong time to run!
GOTO END

:RUNIT
ECHO Right time to run!

:END

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