PDA

View Full Version : جدول ضرب



m.jabari
سه شنبه 03 اسفند 1389, 19:01 عصر
با سلام فراوان خدمت دوستان عزيز :
من امروز با يه سوال برخورد كردم درباره ي ساخت جدول ضرب در Result با SQL اما نمي دونم بايد چه query رو استفاده كنم؟؟؟:گیج:
دوستان اگر كسي مي دونه چطوري ميشه يه query نوشت كه در result يك جدول ضرب برگردونه به من كمك كنه...

AmirHarirbafan
سه شنبه 03 اسفند 1389, 21:18 عصر
سوال جالبی بود
حسابی مخ ملتو کار گرفتی :لبخند:

چندتا روش فکر کنم داشته باشه. این یکیشه



declare @x int
declare @y int
declare @result nvarchar(max)
select @x =1
select @y =1
select @result =''

while @x<=10
begin
while @y <=10
begin
select @result = @result + ' '+ cast(@x * @y as nvarchar(max))
select @y = @y+1
end
select @x = @x+1
select @y =1
print @result
select @result = ''
end

البته یک روش هم با Cross Join تو ذهنم هست، که اونو باید از جداول موقت استفاده کنیم.

Reza_Yarahmadi
سه شنبه 03 اسفند 1389, 21:46 عصر
روش دیگه میتونه بصورت زیر باشه

With res(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10) as(
Select 1,2,3,4,5,6,7,8,9,10
UNION ALL
Select
(a1+1) as a1,
(a2+2) as a2,
(a3+3) as a3,
(a4+4) as a4,
(a5+5) as a5,
(a6+6) as a6,
(a7+7) as a7,
(a8+8) as a8,
(a9+9) as a9,
(a10+10) as a10
From
res
Where a1 < 10)
Select * from res

محمد سلیم آبادی
جمعه 12 فروردین 1390, 09:31 صبح
جدول ضرب توسط ضرب دکارتی:



/*------------------------
WITH C AS
(
SELECT i
FROM (
VALUES (1), (2), (3), (4), (5), (6), (7), (8), (9)
) AS D(i)
)
SELECT MAX(CASE WHEN B.i = 1 THEN A.i * B.i END) AS [1],
MAX(CASE WHEN B.i = 2 THEN A.i * B.i END) AS [2],
MAX(CASE WHEN B.i = 3 THEN A.i * B.i END) AS [3],
MAX(CASE WHEN B.i = 4 THEN A.i * B.i END) AS [4],
MAX(CASE WHEN B.i = 5 THEN A.i * B.i END) AS [5],
MAX(CASE WHEN B.i = 6 THEN A.i * B.i END) AS [6],
MAX(CASE WHEN B.i = 7 THEN A.i * B.i END) AS [7],
MAX(CASE WHEN B.i = 8 THEN A.i * B.i END) AS [8],
MAX(CASE WHEN B.i = 9 THEN A.i * B.i END) AS [9]
FROM C A, C B
GROUP BY A.i;
------------------------*/
1 2 3 4 5 6 7 8 9
----------- ----------- ----------- -----------
1 2 3 4 5 6 7 8 9
2 4 6 8 10 12 14 16 18
3 6 9 12 15 18 21 24 27
4 8 12 16 20 24 28 32 36
5 10 15 20 25 30 35 40 45
6 12 18 24 30 36 42 48 54
7 14 21 28 35 42 49 56 63
8 16 24 32 40 48 56 64 72
9 18 27 36 45 54 63 72 81
Warning: Null value is eliminated by an aggregate or other SET operation.

(9 row(s) affected)

Rejnev
جمعه 12 فروردین 1390, 10:29 صبح
محض خالی نبودن عریضه:

with a(c)as
(
select 1[col]
union
select 2
union
select 3
union
select 4
union
select 5
union
select 6
union
select 7
union
select 8
union
select 9
union
select 10
)
select c, c*2, c*3, c*4, c*5, c*6, c*7, c*8, c*9, c*10
from a

Rejnev
جمعه 12 فروردین 1390, 10:33 صبح
با روش جدول موقت:

create table #tmp(c int);
declare @i int
set @i=1
while (@i<=10)
begin
insert into #tmp(c)values(@i)
set @i=@i+1
end
select c, c*2, c*3, c*4, c*5, c*6, c*7, c*8, c*9, c*10
from #tmp