Jan 7 2013

MSSQL – left, right, len

Problem: Poredati radne naloge po godini i broju ako broj radnog naloga ima sintaksu “broj/godina”

Rješenje: ORDER BY RIGHT(broj_naloga,4) DESC, LEFT(broj_naloga,len(broj_naloga)-5) DESC


Sep 25 2012

MSSQL int to string

Problem: pretvoriti int u string unutar stored procedure

 

Rješenje:

 


DECLARE @broj_narudzbe nvarchar(50)
 DECLARE @Godina int
 DECLARE @broj int

SELECT @broj_narudzbe = CAST(@broj as varchar(10))+'-'+CAST(@Godina as varchar(10))

Sep 5 2012

MSSQL – describe table

Problem:
trebamo saznati koje sve kolone sadrži neka tablica ako znamo samo njeno ime

Rješenje:

SELECT * FROM INFORMATION_SCHEMA.Columns WHERE TABLE_NAME = 'mojaTablica' 

Na ovaj način dobijemo detaljan izvještaj o tablici, a da bi iz toga izvukli samo popis kolona tada radimo:

SELECT column_name FROM INFORMATION_SCHEMA.Columns WHERE TABLE_NAME = 'mojaTablica' 

Sep 3 2012

MSSQL – promjena scheme

Problem: želimo promjeniti schemu nekoj tablici

Rješenje:

ALTER SCHEMA dbo TRANSFER mojaschema.tbl_test

Pri čemu je dbo schema koju želimo dobiti , a mojaschema je ona koju trenutno imamo.


May 21 2012

MSSQL u kojem je redu rezultat koji nas zanima

Zanima nas koji je po redu rezultat sa id-jem 17 kad pozovemo query “SELECT mojID, mojNaslov FROM tbl_tablica ORDER BY mojID ASC”

SELECT * FROM (
 SELECT
 ROW_NUMBER() OVER (ORDER BY mojID ASC) AS rownumber,
 mojID, mojNaslov
 FROM tbl_tablica
) AS test
WHERE mojID=17

Navedeni query daje koji je po redu rezultat gdje je mojID=17 unutar queryja SELECT mojID, mojNaslov FROM tbl_tablica ORDER BY mojID ASC


May 18 2012

MSSQL – IF ELSE u SELECT statmentu

Rješenje:

SELECT CASE WHEN mojdatum>getdate() THEN 1 ELSE 0 END as statusDatuma FROM tablica

Apr 21 2012

MS SQL – divide by zero error encountered

Problem:

Dijeljenje dvaju polja ako je djelitelj nula (0) daje grešku

SELECT A/B as C from myTable

daje grešku

divide by zero error encountered

ako je B nula

Rješenje:

SELECT ISNULL(A / NULLIF(B, 0), 0) AS C FROM myTable

Ovo B ako je nula pretvara u null. S obzorom da broj dijeljen s null daje null stavljamo ISNULL da bi rezultat bio nula.


Apr 21 2012

MS SQL – AVG daje netočan rezultat

Problem:
U bazi imamo dva reda datatype int. Prvi ima vrijednost 10, a drugi vrijednost 15. Kad okinemo query

 SELECT AVG(kolicina) as prosjecna_kolicina  FROM myTable

dobijemo 12 iako znamo da je prosjek od 10 i 15 zapravo 12,5  tj. (10+15)/2

Rješenje:

SELECT AVG(CAST(kolicina AS DECIMAL(10,2))) AS prosjecna_kolicina FROM myTable

Problem je u datatypeu polja iz kojeg radimo AVG. Ako nam je datatype integer i rezultat će biti integer pa prije izračuna prosjeka trebamo taj integer pretvoriti u decimal.


Dec 30 2011

MSSQL verzija MySql funkcije NOW()

Problem:
Zanima nas MSSQL funkcija slična MySql funkciji NOW()

Rješenje:

SELECT  GETDATE()

Nov 25 2011

MSSQL – CONCAT

Problem:

Spajanje dvaju polja u jedno npr. prilikom SELECTA, dakle MSSQL verzija MySql funkcije CONCAT

http://systasis.biz/blog/?p=45

Rješenje:

 SELECT ime + ' ' + prezime as korisnik FROM tbl_osobe