2011-02-11 13 views
8

Çok uzun bir saklı yordamda aşağıdaki kodu kullanıyorum. Burada P, Ürün tablosuna eşittir:SQL Server: Önek içeren bir tablodan her şeyi nasıl seçebilirim?

SELECT 
P.*, 
etc1, 
etc2 

Hangi "ProductID" ve benzeri.

Aşağıdaki gibi bir ön ek ile seçmek istiyorum:

SELECT 
P.* AS P_*, 
etc1, 
etc2 

Hangi bana "P_ProductID" verir ve böyle devam eder.

Bunu yapmak mümkün mü?

+0

Belirtilmeyen başka bir seçenek, doğru şekli ve –

cevap

15

Dinamik SQL kullanmıyorsanız, hayır. Gerçi böyle bir şey gerektirmesi çok nadir, ihtiyacınız olduğuna emin misin?

Çalışma örnek

create table Products (ProductID int, Price money, Description varchar(10)); 
insert Products select 1, 12.3, 'apples' 
insert Products select 2, 2.4, 'bananas' 
create table OrderDetails (OrderID int, ProductID int, Qty int) 
insert into OrderDetails select 11,1, 2 
insert into OrderDetails select 11,2, 4 

declare @sql nvarchar(max) 
select @sql = coalesce(@sql+',','') + 
    'P.' + QuoteName(Column_name) + ' as ' + QuoteName('P_' + Column_name) 
from INFORMATION_SCHEMA.COLUMNS 
where TABLE_NAME = 'Products' 
order by ORDINAL_POSITION 
set @sql = ' 
select ' + @sql + ', O.OrderID, O.Qty 
from Products P 
inner join OrderDetails O on P.ProductID = O.ProductID 
' 
--print @sql :: uncomment if you need to see it 
exec (@sql) 

Çıktı:

tek sütuna uygulanan 'GİBİ' İnanıyorum
P_ProductID P_Price    P_Description OrderID  Qty 
----------- --------------------- ------------- ----------- ----------- 
1   12.30     apples  11   2 
2   2.40     bananas  11   4 
+0

+1'den seçerek bir VIEW oluşturmaktır, ancak ... Ben tembel olmaktan daha fazla P_ * kullanmak istemek için başka bir neden göremiyorum. Ve bunları kullanarak bunları baştan çıkarmayı mı düşünüyorsun ?! :) –

+5

@Andriy 7 puanlık bir sayımı ve sayımı soruyu görüyor musunuz ?! Neden ip istediğini sormadım. Sen sor, ben vereyim :) – RichardTheKiwi

0

. Eminim kodunuzdaki 'P_' sütun başlığına ekleyebilirsin.

2

Tüm sütunları ayrı ayrı listelerseniz bunu yapabilirsiniz.

Sütun takma adları joker karakterle yapılamaz.

Eğer p. * Çok uzun bir liste ve geri kalanı sadece birkaç sütun ise 'geri kalanını' yeniden adlandırmak ve p. * 'Yi olduğu gibi bırakmak daha iyi olabilir.