SQL e dair bir kaç ip ucu

14 Mar 2012 In: ipucu, SQL

CONVERT(varchar(20), CAST(TBLMCEK.TUTAR AS money), 1) AS Tutar  //12,340.00

.Text.Replace(",", "").Replace(".", ",") 

 

 

INSER INTO Tablo() OUTPUT INSERTED.SIP_ID VALUES() 

 

CASE
WHEN TBLMCEK.SC_YERI = 'P' THEN 'Portföy'
WHEN TBLMCEK.SC_YERI = 'T' THEN 'Tahsil'
WHEN TBLMCEK.SC_YERI = 'E' THEN 'Teminat'
WHEN TBLMCEK.SC_YERI = 'C' THEN 'Ciro'
ELSE '-'
END AS Yeri, 

 

 SQL Serverda parasal tutarlar nasıl 99560,50 şeklinden  “99.560,50 TL” şekline kolayca formatlanabilir :

 

SELECT CARI_KOD, CARI_ISIM

CONVERT(VARCHAR,cast(SUM(BORC) AS MONEY),-1) + ‘ TL’     AS  TopBorc,

FROM CARI_HESAP_DOKUMU

 

–Bir önceki ayın son günü

SELECT  DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,GETDATE()),0)) AS ONCEKI_AYIN_SONGUNU

 

–Şu anki ayın son günü

SELECT  DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,GETDATE())+1,0)) AS SU_ANKI_AYIN_SONGUNU

 

–Sonraki ayın son günü bul

SELECT  DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,GETDATE())+2,0)) AS SONRAKI_AYIN_SONGUNU

 

//ayın son günü bulma

//CONVERT(….,102) ile tarihi sade hale dönüştür (2011.03.25 gibi) yoksa 2011.03.25 23:59:59 olur

DECLARE @TARIH1 DATETIME
SET @TARIH1 = ’8/18/2011′
SELECT  CONVERT(VARCHAR(25),DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,@TARIH1)+1,0)),102) AS AYIN_SON_GUNU

//ayın ilk gününü bulma

SELECT CONVERT(VARCHAR(25),DATEADD(dd,-(DAY(@TARIH1)-1),@TARIH1),102) AS AYIN_ILK_GUNU

 

//yılın ilk gününü bulma

SELECT CONVERT(VARCHAR,dateadd(year, datediff(year, ”, @TARIH1),”),102) AS YILIN_ILK_GUNU

 

//yılın son gününü

SELECT CONVERT(VARCHAR,dateadd(dd, 364, DATEADD(year, datediff(year, ”,@TARIH1),”)),102) AS YILIN_SON_GUNU

 

//sadece tarih bilgisi lazım olur :

SELECT CONVERT( VARCHAR, DATEADD(DAY,-0,GETDATE()) ,102) AS TARIH

 

//SQL CASE kullanımı

SELECT hg.*,

CASE
WHEN MDoviz = 'EUR' THEN (Convert(decimal(18,4),(SELECT TOP 1 kr.EURA FROM Kurlar kr WHERE KDate >= HDate)))
WHEN MDoviz = 'USD' THEN (Convert(decimal(18,4),(SELECT TOP 1 kr.USDA FROM Kurlar kr WHERE KDate >= HDate)))
ELSE 1
END AS Kur,

 

CASE
WHEN MDoviz = 'EUR' THEN (Convert(decimal(18,2),(SELECT TOP 1 kr.EURA FROM Kurlar kr WHERE KDate >= HDate)*MFiyat))
WHEN MDoviz = 'USD' THEN (Convert(decimal(18,2),(SELECT TOP 1 kr.USDA FROM Kurlar kr WHERE KDate >= HDate)*MFiyat))
ELSE 1*MFiyat
END AS TutarTL,

(SELECT u.Adi FROM Ulkeler u WHERE u.ULK_ID=hg.VARIS_ID) as Varis  

FROM HizliGirisler hg Where YIYD=1 

  

----- Bir tabloda tüm kullanıcıların tüm girişleri tutuluyor(dt,dv,usern), ama ben bir kullanıcının en son giriş yaptıgı cihaz nosunu almak istiyorum ----

 

WITH cte AS (SELECT *, CIH_ID as nCIH_ID FROM cihazlar)

SELECT a.CIH_ID, a.dt, a.dv, a.usern 

FROM cte a LEFT JOIN cte b

  ON a.usern=b.usern

 AND (a.nCIH_ID < b.nCIH_ID OR 

     (a.nCIH_ID = b.nCIH_ID AND a.dv<b.dv))

WHERE b.CIH_ID IS NULL and len(a.dv)>5

order by usern,dt,dv 

 

 

Windows Server 2008 Foundation sürümü üzerine SQL Server 2008 Express Edition kurarken aşagıdaki hatayı alırsanız :

Rule "Performance counter registry hive consistency" failed.

Çözümü Registry de ve oldukca basit :

Türkçe işletim sisteminde 
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib\01F

İngilizce de ise 
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib\009

Klasörüne gidin ve
"Counter" ve "Help" anahtarlarını (Çok Dizeli Deger) açın ve içindeki verileri var olan kalsörden kopyalayıp yapıştırın. 

Şimdi kurulumu tamamlaya bilirsiniz. 



 

Uzun süredir kullanmadıgınız ve üzerinden mixed modda kurmuş oldugunuz bir SQL Server olan sunucunuz var ise, şifreyi hatırlayamamanız normal. Birde size yol gösterecek bir web.config dosyanız felan yok ise, şifreyi sıfırlayıp bu sıkıntıdan kurtula bilirsiniz.

 

1. Networkunuz daki SQL sunucuları listelemek içim

     osql -L

2. Gelen listeden adını ögrenip 

     osql -S <server-name> -E

eger local de ise SQL, aşagıdakide görür işinizi

     osql -S . -E

3. Yeni şifreyi atamak için

     sp_password NULL,'yeni_sifre','sa'
     go
 

 

Yeni SA şifreniz ile SQL server management veya Visual Studio ile baglanabilirsiniz artık. Hayırlı ugurlu olsun...

Ben Kimim ?

Celiker BahceciMerhabalar, ben Çeliker BAHÇECİ. 2004 den beri özel sektörde bilgisayar mühendisligi ve egitmenlik yapıyorum. Yine aynı yılın Ekim ayından beri sitemde .Net ile programlama ve hayat görüşüm ile ilgili makalelerimi yayınlıyorum. Blogum dışında Yazgelistir.com, mobilnedir.com gibi ineta kapsamındaki bir çok siteye Microsoft teknolojileri ile ilgili yazılar yazmaktayım.
Bu site ile sizinde hayatınızı anlamlandırmanızda bir parça katkımın olması dilegiyle...