當前位置:首頁 » 編程語言 » sql循環拼接查詢結果
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sql循環拼接查詢結果

發布時間: 2022-09-06 19:55:13

sql如何將一個表裡的不同條件查詢結果拼接顯示

關系型資料庫是以一行來表示一條數據的,而不是一列。你要得出的那個表格,一行沒有任何意義。

代碼僅作參考:

declare@count0int;
declare@count1int;
declare@count2int;
declare@count3int;

if(object_id('TableA')isnotnull)droptableTableA
selectgetdate()ascreateTime,產品名稱intoTableAfrom[表名]where銷售金額>=200and銷售金額<=599;

if(object_id('TableB')isnotnull)droptableTableB
selectgetdate()ascreateTime,產品名稱intoTableBfrom[表名]where銷售金額>=600and銷售金額<=899;

if(object_id('TableC')isnotnull)droptableTableC
selectgetdate()ascreateTime,產品名稱intoTableCfrom[表名]where銷售金額>=900;

select@count1=count(1)fromTableA;
select@count2=count(1)fromTableB;
select@count3=count(1)fromTableC;

set@count0=@count1;
if@count0<@count2
begin
set@count0=@count2;
end

if@count0<@count3
begin
set@count0=@count3;
end

declare@iint;
set@i=0;
while(@count1+@i)<@count0
begin
insertintoTableAvalues(getdate(),'');
set@i=@i+1;
end

SET@i=0;
while(@count2+@i)<@count0
begin
insertintoTableBvalues(getdate(),'');
set@i=@i+1;
end

SET@i=0;
while(@count3+@i)<@count0
begin
insertintoTableCvalues(getdate(),'');
set@i=@i+1;
end

selecta.產品名稱as'200到599',b.產品名稱as'600到899',c.產品名稱as'900以上'
from(selectrow_number()over(orderbycreateTime)asrownum,產品名稱fromTableA)a
leftjoin
(selectrow_number()over(orderbycreateTime)asrownum,產品名稱fromTableB)bona.rownum=b.rownum
leftjoin
(selectrow_number()over(orderbycreateTime)asrownum,產品名稱fromTableC)conc.rownum=b.rownum

② sql select語句,查詢出兩列結果拼接在一起

1、Oracle創建表,含兩列,name和job;create table test_job(name varchar2(30), job varchar2(30));

③ SQL server 怎樣將循環查詢的多個結果集進行左連接

用游標:
declare @變數1 varchar(50),@變數2 varchar(50)
-----創建游標
declare mycurs cursor for select 欄位A,欄位B from table1
open mycurs-----打開游標
fetch next from mycurs into @變數1,變數2
while @@fetch_Status=0--循環游標
begin
---循環處理
fetch next from mycurs into @變數1,變數2
end
close mycurs
Deallocate mycurs
我說的可能不好,你自己去可以看看游標的相關資料。

④ sql語句 怎麼把查詢的多條結果用,號拼接起來,不用函數就用SQL語句

-- 單列拼接,先查出一行,再加上逗號,接著拼接 查出的下一行
select group_concat(E.SUPPORT)
from ENGINES E
where E.XA IN('YES','NO')
--結果如下:YES,YES,YES,YES,YES,YES,DEFAULT,YES

-- 將查詢的結果中的 "," 號,替換成 "**" 號
select REPLACE(group_concat(E.SUPPORT),',','**')
from ENGINES E
where E.XA IN('YES','NO')
--結果如下:YES**YES**YES**YES**YES**YES**DEFAULT**YES

-- 將查詢的結果中 重復 的記錄 去掉,只剩一條記錄,然後再拼接
select group_concat(DISTINCT(E.SUPPORT))
from ENGINES E
where E.XA IN('YES','NO')
--結果如下:YES,DEFAULT

-- 多列拼接,同一行的先拼接,再加上逗號,接著拼接下一行
select group_concat(E.ENGINE,E.SUPPORT)
from ENGINES E
where E.XA IN('YES','NO')
--結果如下:MRG_MYISAMYES,MyISAMYES,BLACKHOLEYES,CSVYES,MEMORYYES,ARCHIVEYES,InnoDBDEFAULT,PERFORMANCE_SCHEMAYES

⑤ 連接兩表查詢結果的SQL語句

如果只查詢兩個表有對應關系的資料,則用內連接:
select
*
from
table1
inner
join
table2
on
table1.id=table2.id;
如果查詢表1中有的資料,表2中若有則也顯示,則使用左連接:
select
*
from
table1
left
join
table2
on
table1.id=table2.id;
不管兩個表是否有關聯,所有資料都顯示,則用外鏈接:
selecg
*
from
table1
outer
join
table2
on
table1.id=table2.id;

⑥ sql查詢結果拼接

;
with class as (
select '1' as class_id,'班級1' as name
union
select '2','班級2'
),
student as (
select '2' as classid,'張三' as name
union
select '2','李四'
union
select '1','王五'
union
select '2','小趙'
union
select '1','小明'
)

select classid,
u_type=stuff((select ','+name from student where k.classid=classid for XML path('')),1,1,'')
from student k
group by classid
classid u_type
------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1 王五,小明
2 李四,小趙,張三

(2 行受影響)

⑦ 循環拼接sql語句條件

Stringtmp="select*fromtableNamewhereidin(";
for(inti=0;i<a.length;i++){
//判斷是不是數組最後一個元素,不是就加上逗號,是就不加逗號
if(i<a.length-1)
tmp+=a[i]+",";
else{
tmp+=a[i];
}
}
tmp+=")";

⑧ SQL server查詢結果拼接

問題分析:查詢結果拼接有多種

示例使用的臨時表:

CreateTablet_b_TableTemp
(
IDasintnotnull,
usernameasvarchar(50)null
)


示例1、查詢username(字元列)與字元串(用戶姓名)拼接

select'用戶姓名'+usernamefromt_b_TableTemp


示例2、查詢ID(數字列)與字元串(序號)拼接

select'序號'+cast(IDasvarchar(50))fromt_b_TableTemp

與示例1比較後你就知道了,凡是遇到數字類型和字元拼接,都需要先將數字類型轉換為字元串類型,轉換函數有Cast和Convert,你可以酌情使用。


示例3:多列合並

selectcast(IDasvarchar(50))+usernamefromt_b_TableTemp


示例4:多個查詢結果的合並(使用Union All或Union),在使用的時候一定要注意多個查詢結果的列數,列類型必須一致

selectID,usernamefromt_b_TableTemp
unionall
selectID,usernamefromt_b_TableTemp

上面的查詢結果是t_b_TableTemp記錄得雙倍,也就是說Union all方式是將兩個查詢結果拼接起來為一個查詢結果。

selectID,usernamefromt_b_TableTemp
union
selectID,usernamefromt_b_TableTemp

上面的查詢結果和t_b_TableTemp記錄一致,也就是說Union是會去除完全重復的記錄

⑨ SQL循環查詢如何合並查詢結果到一個表,每個結果表作為一個欄位

簡單寫了一個sqlserver的

按照你說的建個表,放了點數據

createtable訂單
(訂單號int,
訂單日期datetime,
訂單價值int)

insertinto訂單values(1,'2013-05-01',10)
insertinto訂單values(2,'2013-05-01',20)
insertinto訂單values(3,'2013-06-01',30)
insertinto訂單values(4,'2013-06-01',40)
insertinto訂單values(5,'2013-07-01',50)
insertinto訂單values(6,'2013-08-01',60)
insertinto訂單values(7,'2013-08-01',70)
insertinto訂單values(8,'2013-09-01',80)
insertinto訂單values(9,'2013-09-01',90)
insertinto訂單values(10,'2013-10-01',100)
insertinto訂單values(11,'2013-10-01',110)
insertinto訂單values(12,'2013-11-01',120)
insertinto訂單values(13,'2013-11-01',130)
insertinto訂單values(14,'2013-12-01',140)

你要查上個月到之前某個月的

所以執行這個

declare@sqlvarchar(4000)
declare@indexint
set@index=2--這個就是你說的要查前某個月的,這里寫2就代表9,10,11三個月
set@sql='select''匯總''as匯總'
select@sql=@sql+',sum(isnull(caseconvert(varchar(7),訂單日期,120)when'''+convert(varchar(7),[訂單日期],120)+'''then[訂單價值]end,0))as
['+convert(varchar(7),[訂單日期],120)+']'
from(selectdistinctconvert(varchar(7),訂單日期,120)訂單日期from[訂單]where
convert(varchar(7),訂單日期,120)>=convert(varchar(7),dateadd(month,(-1-cast(''+@index+''asint)),getdate()),120)
andconvert(varchar(7),訂單日期,120)<convert(varchar(7),getdate(),120))asa
select@sql=@sql+'from[訂單]'
exec(@sql)--這句我是執行sql,你可以直接把上句改成createtable的形式,把sql語句print出來,看看

結果