當前位置:首頁 » 編程語言 » sql單豎

sql單豎

發布時間: 2022-04-26 10:55:28

sql查詢橫轉豎顯示

--建立測試數據
create table tb1
(
id varchar(20) not null,
value varchar(20) not null
)
go

insert into tb1
select '1','aa'
union all
select '1','bb'
union all
select '2','aaa'
go
--由於你這表裡沒有主健,可以用來做標識用,可以先生成一個臨時表,並加上自增欄位px用來做唯一標識列
select px=IDENTITY(INT,1,1),id,value
INTO #temptb
from tb1
go
select * from #temptb
go
--動態SQL
declare @sql varchar(8000)
set @sql = 'select'
select @sql = @sql + ',max(case px when ' +CONVERT(varchar(4),px)+ ' then value else '''' end) [' + id + ']'
from (select * from #temptb) a
set @sql = STUFF(@sql,7,1,' ') + ' from #temptb'
exec(@sql)
go
--靜態SQL
select max(case px when 1 then value else '' end) [1],
max(case px when 2 then value else '' end) [1],
max(case px when 3 then value else '' end) [2]
from #temptb
go
--刪除測試數據
DROP TABLE #temptb
go
DROP TABLE tb1

返回:

(所影響的行數為 3 行)

(所影響的行數為 3 行)

px id value
1 1 aa
2 1 bb
3 2 aaa

(所影響的行數為 3 行)

1 1 2
aa bb aaa

1 1 2
aa bb aaa

(所影響的行數為 1 行)

❷ SQL 如何查詢時 橫著的數據 豎著顯示

看你表結構是什麼樣的吧,最徹底的方法是把表結構就改成 姓名,科目,分數。如果表結構是 姓名,數學,語文,英語 不能變,又一定要顯示成那樣,就只好用union拼一下了,比如 select 姓名,'數學' as 科目,數學 as 分數 from 表 union select 姓名,'語文' as 科目,語文 as 分數 from 表 union select 姓名,'英語' as 科目,英語 as 分數 from 表。

❸ SQL中內容都為字元型的豎版表轉橫版,如何實現

Word默認為一節,而一節的頁面格式是相同的,若想把一個WORD文件中的每一頁隨意設置成橫版或是豎版,必須將其設置為單獨一節,這樣就可以單獨設置了。
假設有一個10頁文檔,想讓其中第3頁為橫板,設置步驟:
1、將游標放在第3的首位置,單擊頁面布局---->分隔符---->分節符---->下一頁,如圖所示;
2、將游標放在第3頁的尾部,重復上面的操作上,使第3頁成為單獨一節;
3、游標放在第3頁,單擊頁面布局---->紙張方向---->橫向即可,如圖所示。

❹ SQL 橫排變豎排的問題

給例子遠比你貼代碼快,

SELECT name,
SUM(CASE subject WHEN '語文' THEN Result ELSE 0 END),
SUM(CASE subject WHEN '數學' THEN Result ELSE 0 END),
SUM(CASE subject WHEN '物理' THEN Result ELSE 0 END)
FROM tb
GROUP BY Name

❺ SQL 豎列 轉換橫列的問題

使用CASE來處理。

select 編號, sum( 第一季度第一次施肥量) 第一季度第一次施肥量, sum( 第一季度第二次施肥量) 第一季度第二次施肥量, sum( 第二季度第一次施肥量) 第二季度第一次施肥量
from
(
select 編號
case when 季度=1 and 施肥次數=1 then 施肥量 else null end 第一季度第一次施肥量,
case when 季度=1 and 施肥次數=2 then 施肥量 else null end 第一季度第二次施肥量,
case when 季度=2 and 施肥次數=1 then 施肥量 else null end 第二季度第一次施肥量
from 表
) a
group by a.編號

❻ 如何將sql語句搜索的結果進行橫豎轉換

我幫你找個demo

DROPTABLE#tb
createtable#tb([品號]int,[日期]varchar(5),[數量]int)
insert#tb
select1001,'06-08',11unionall
select1001,'06-09',12unionall
select1001,'06-10',13unionall
select1001,'06-11',14unionall
select1001,'06-12',15

DECLARE@sqlNVARCHAR(MAX),@colListNVARCHAR(MAX)
SET@colList=STUFF((SELECT','+QUOTENAME([日期])FROM#tbGROUPBY[日期]ORDERBY[日期]FORXMLPATH('')),1,1,'')
SET@sql=N'
select*from#tba
pivot
(max([數量])for[日期]in('+@colList+'))b
'
EXEC(@sql)

http://bbs.csdn.net/topics/390542752

❼ SQL中,有個豎杠表示意思如下第一行最右邊,還有那個<>表示啥意思可以不要嘛

<>表示可選項,
|表示分隔,或者的意思
就是說上面一句話代表兩句話,
ALTER TABLE table_name ADD column_name data_type;
ALTER TABLE table_name MODIFY column_name data_type;

❽ SQL數據橫列變豎列

以下方法適用於任意多的科目:
--先建立函數,功能是根據給出的姓名,到表中去查找所選科目及成績並橫向列示出來.
CREATE FUNCTION getcoldata
(@XM VARCHAR(18))
RETURNS varchar(1000)
AS
BEGIN
DECLARE @deli VARCHAR(2)
set @deli=' '
declare @f1 varchar(100),@F2 DECIMAL(12,1),@result varchar(1000),@sn0 int
set @result=''
declare ddcursor cursor for select 選修科目,成績 from 表名 where 姓名=@XM order by 選修科目
open ddcursor
fetch next from ddcursor into @f1,@F2
while @@fetch_status!=-1
begin
set @result=@result+@deli+isnull(@f1,'')+':'+ISNULL(CONVERT(VARCHAR,@F2),'')
fetch next from ddcursor into @f1,@F2
end
close ddcursor
deallocate ddcursor
return (@result)
end

GO

--使用方法:
select 姓名,科目及成績=dbo.getcoldata(姓名) from (SELECT DISTINCT 姓名 from 表名) a

結果是這樣的
姓名 科目與成績
張三 計算機:75 高等數學:80 物理:77
李四 高等數學:55 微積分:87
王五 語文:78

=============
我這么看您的問題:
1.查詢是用來輸出的,不是用來統計的:您的這種結果即使用分開欄位也是很不容易統計的,要想統計還是原表比較方便.
就是說:這種查詢結果更方便輸出\查看,原表更方便於作統計.
所以,我勸您,比較科學的作法是保留原表,可以方便的作出包括本查詢在內的各種查詢.而您如果只保留查詢後的表,即使用欄位是分開的,那麼將很難再作其它統計和查詢.因為數據太不規范.

2.可以輸出各門分開的EXCEL表:如果您想輸出到EXCEL表,您要以把函數中的分隔符改成逗點或製表符(CHAR(9)),直接存成CSV或XLS文檔就成了.
3.完全按照您的結果也能輸出.但今天我沒空了,給你個提示:
先看看我以前的回答中,有一些是關於加序號的,加上序號後就好說了.
===========
加到200分,我就開始為您作分開欄位的查詢.(辦法我知道,但是很麻煩啊)
===============================================
與您的要求完全相同的查詢:
為了清楚,先建立一個查詢,給每人的科目加序號,如果不理解,執行一下SELECT * FROM MYVIEWNAME就知道了:
=====================

視圖改一下:
create view myviewname
as
select 姓名,科目,成績,序號=(select count(1) from tablename a where a.姓名=b.姓名 and a.科目>=b.科目) from
(select * from tablename where 狀態='有效') --以子查詢替換了TABLENAME,夠直觀吧?
b --視圖加上了序號欄位
go

然後,這就是您要的查詢,根據每人所選科目的最大數,可以無限向後延伸,加入科目6,科目7等:
select a.姓名,
科目1=isnull(t1.科目,''),
成績1=isnull(t1.成績,''),
科目2=isnull(t2.科目,''),
成績2=isnull(t2.成績,''),

科目3=isnull(t3.科目,''),
成績3=isnull(t3.成績,''),

科目4=isnull(t4.科目,''),
成績4=isnull(t4.成績,''),

科目5=isnull(t5.科目,''),
成績5=isnull(t5.成績,'')
from (SELECT DISTINCT 姓名 from tablename) a
left join myviewname t1 on t1.姓名=a.姓名 and t1.序號=1
left join myviewname t2 on t2.姓名=a.姓名 and t2.序號=2
left join myviewname t3 on t3.姓名=a.姓名 and t3.序號=3
left join myviewname t4 on t4.姓名=a.姓名 and t4.序號=4
left join myviewname t5 on t5.姓名=a.姓名 and t5.序號=5

好了,加到200分再選擇正確答案!

❾ sql 裡面怎麼把豎表變成橫表

SELECT 姓名
,'數學'=MAX(CASE 課程 WHEN '數學' THEN 分數 ELSE 0 END)
,'語文'=MAX(CASE 課程 WHEN '語文' THEN 分數 ELSE 0 END)
,'英語'=MAX(CASE 課程 WHEN '英語' THEN 分數 ELSE 0 END)
FROM TB
GROUP BY 姓名

--或者
SELECT 姓名,
,'數學'=SUM(CASE 課程 WHEN '數學' THEN 分數 ELSE 0 END)
,'語文'=SUM(CASE 課程 WHEN '語文' THEN 分數 ELSE 0 END)
,'英語'=SUM(CASE 課程 WHEN '英語' THEN 分數 ELSE 0 END)
FROM TB
GROUP BY 姓名

❿ SQL 如何查詢時 豎著的數據 橫著顯示

你這個是將縱表轉換為橫表,例如如下數據:
'wangming', 'shuxue', 100
'wangming', 'yuwen', 90
'wangming', 'yingyu', 140

可以使用如下語句處理:
select a.v_name,a.v_score shuxue,b.v_score yuwen,c.v_score yingyu from temp_1 a,temp_1 b,temp_1 c
where a.v_name=b.v_name
and a.v_name=c.v_name
and a.v_name='wangming'
and a.v_course='shuxue'
and b.v_course='yuwen'
and c.v_course='yingyu';

熱點內容
sql存儲過程命令 發布:2025-05-16 13:17:54 瀏覽:144
用紙做解壓小玩具西瓜 發布:2025-05-16 13:04:09 瀏覽:935
區域網xp無法訪問win7 發布:2025-05-16 13:03:58 瀏覽:942
油卡如何修改密碼 發布:2025-05-16 13:00:35 瀏覽:901
安卓手機如何拼照片 發布:2025-05-16 12:58:23 瀏覽:374
深入淺出python 發布:2025-05-16 12:56:52 瀏覽:655
國二c語言vc2010怎麼編譯運行 發布:2025-05-16 12:53:49 瀏覽:424
華為熱點哪裡看密碼 發布:2025-05-16 12:53:44 瀏覽:515
新手如何用java寫安卓app 發布:2025-05-16 12:53:07 瀏覽:402
虛榮掛腳本 發布:2025-05-16 12:50:44 瀏覽:480