Isin icinde sum() olduguna gore giris-cikis kodu ile notlarin birlestirilmesini ayrica yapmak isteyeceksin. Senin kodun gozu fazla yordugundan oradan tablo kolon isimlerini vs okumak istemedim, onun yerine kendi kafamdan uydurdugum isimlerle sunun gibi bir
sey yapabilirsin:
WITH notlar
AS (
SELECT GirisCikisId,
'Not ' +
LTRIM(STR(ROW_NUMBER() OVER ( PARTITION BY [GirisCikisID] ORDER BY [NotId] ))) +
': ' + txtNot AS gcNotlari
FROM [GirisCikisNot]
),
StokNotlari
AS (
SELECT GirisCikisId,
(
SELECT gcNotlari + CHAR(10)
FROM [notlar] n
WHERE n.[GirisCikisID] = gc.[GirisCikisId]
FOR
XML PATH('')
) as StokNotu
FROM [GirisCikislar] AS [gc]
)
SELECT ... ;
Ana select icin StokNotlari (GirisCikisId, StokNotu) olan join edebilecegin bir tablo gibi. Tabii bu kadar isi server'da yaptirmak ister misin o ayri. Istesen bile SQL server string islemlerinde cok yavas, onun icin isin bu kismini C# ile CLR function
olarak yazmak isteyebilirsin (inanilmaz buyuk hiz farklari gozlenebiliyor, benden soylemesi).
Not: SQL'ini bu kadar okunamaz hale getiren bir arac mi kullaniyorsun? Redgate SQLPrompt cok basarili ama ucretli, Apex'inki o kadar iyi degil ama ucretsiz. Onlardan birisiyle gozlerine iskence etmeyi azaltabilirsin.