sipariş dağılımı

MS SQL Server veritabanı ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
erdogan_ozkaya
Üye
Mesajlar: 839
Kayıt: 03 Eki 2007 02:00

sipariş dağılımı

Mesaj gönderen erdogan_ozkaya »

Merhaba,

iki tablom var biri "proje_kayit" diğeri "siparis_detay" hangi firma hangi üründen ne kadar sipariş vermiş

Resim

tablo gibi çıktı akmak istiyorum, ürün kartları ve projeler opsiyonel artabilir eksilebilir artabilir yani projelerin satır, ürün kartlarının ise sütun olmalı ki listeyi sorunsuz alabileyim. ve bir projeden bir defa olamalı aynı şekilde üründen bir tane olmalı yani alt alta veya yan yana birden fazla proje, ürün olmamalı

siparisler_detay.Cari_Referans = proje_kayit.Proje_Referans

siparisler_detay.Urun_Kodu = urun_kartlari.Urun_Kodu

Kod: Tümünü seç

`siparisler_detay`; 
  `ID` int(11) NOT NULL auto_increment,
  `Urun_Kodu` varchar(255) default NULL,
  `Siparis_No` varchar(255) default NULL,
  `[b]Cari_Referans[/b]` varchar(255) default NULL,
  `Stok_Kodu` varchar(255) default NULL,
  `Urun_adi` varchar(255) default NULL,
  `Urun_Aciklama` varchar(255) default NULL,
  `Urun_Adeti` varchar(255) default NULL,
  `Birim_Turu` varchar(255) default NULL,
  `Siparis_Tarihi` date default NULL,
  `Siparis_Saati` time default NULL,
  `Durumu` varchar(255) default NULL,
  `Ekleyen_Personel_Id` varchar(255) default NULL,
  `Iptal_Nedeni` varchar(255) default NULL,
  `Alis_Fiyati` float default NULL,
  `Satis_Fiyati` float default NULL,
  `Toplam` float default NULL,

Kod: Tümünü seç

TABLE `proje_kayit` (
  `[b]Proje_Referans[/b]` int(11) NOT NULL auto_increment,
  `Calisilan_Firma` varchar(255) default NULL,
  `Proje_Adi` varchar(255) default NULL, 
  PRIMARY KEY  (`Proje_Referans`)

Kod: Tümünü seç

TABLE `urun_kartlari` (

Urun_Kodu
Urun_adi
Urun_Adeti
En son erdogan_ozkaya tarafından 05 Tem 2012 04:32 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
erdogan_ozkaya
Üye
Mesajlar: 839
Kayıt: 03 Eki 2007 02:00

Re: Help - sipariş dağılımı

Mesaj gönderen erdogan_ozkaya »

arkadaşlar, bunu buldum ama toparlayamıyorum yardımcı olursanız sevinirim,

http://msdn.microsoft.com/tr-tr/library ... .105).aspx
erdogan_ozkaya
Üye
Mesajlar: 839
Kayıt: 03 Eki 2007 02:00

Re: Help - sipariş dağılımı

Mesaj gönderen erdogan_ozkaya »

istediğim bu fakat toparlayamıyorum

http://onursalkaya.blogspot.com/2011/12 ... slemi.html
erdogan_ozkaya
Üye
Mesajlar: 839
Kayıt: 03 Eki 2007 02:00

Re: GERÇEKTEN ACİL - sipariş dağılımı

Mesaj gönderen erdogan_ozkaya »

arkadaşlar bunu toparlayamadım yardımcı olabilecek bir arkadaş yok mu ?

Kod: Tümünü seç

create procedure dynamic_pivot
(
@select varchar(2000),
@PivotCol varchar(100), 
@Summaries varchar(100)
) as
declare @pivot varchar(max), @sql varchar(max)
select @select =replace(@select,'select ','select '+@PivotCol+' as pivot_col,')
 

create table #pivot_columns (pivot_column varchar(100))

Select @sql='select distinct pivot_col from ('+@select+') as t'

insert into #pivot_columns
exec(@sql)

select @pivot=coalesce(@pivot+',','')+'['+pivot_column+']'from #pivot_columns

select @sql=
'
    select * from 
    (
        '+@select+'
    ) as t 
    pivot 
    (
        '+@Summaries+' for pivot_col in ('+@pivot+')
    ) as p
'

exec(@sql)


<><><><>
drop table dbo.urun_kartlari
drop table dbo.siparisler_detay
drop table proje_kayit

create table dbo.urun_kartlari(Urun_Kodu varchar(50), Urun_adi varchar(50) )
create table siparisler_detay(
						   Urun_Kodu varchar(50),
						   Cari_Referans varchar(50),
						   Urun_adi varchar(50),
						   Urun_Kodu int,
						   Siparis_Tarihi datetime,
						   Urun_Adeti int
						   );
create table proje_kayit(Proje_Referans varchar(50), Proje_Adi varchar(50))
						   
insert into urun_kartlari(Urun_Kodu, Urun_adi)
select    'CND' Urun_Kodu, 'Haribo' Urun_adi
       


insert into proje_kayit
select    'PJC1','Project Candy'   
union
select    'PJC2','Project Chocolate'   ;     
;     

 


      
insert into siparisler_detay(
								Urun_Kodu,
								Current_Reference,
								Urun_adi,
								Urun_Kodu,
								Siparis_Tarihi,
								Urun_Adeti
								)
select Urun_Kodu,
      'erdogan',
      Urun_adi,
      '12345' Urun_Kodu,
      getdate() Siparis_Tarihi,
      50 Urun_Adeti
 FROM urun_kartlari pc;



EXEC dynamic_pivot
'SELECT Proje_Adi, Urun_Adeti
   FROM siparisler_detay as e
  cross apply proje_kayit ',
 'Proje_Adi',
'SUM(Urun_Adeti)'  

select distinct pivot_col from (SELECT Proje_Adi, Proje_Adi pivot_col 
   FROM siparisler_detay as e
  cross apply proje_kayit ) as t
Cevapla