(持續更新ing)sql-- 4-列轉行 3-行轉列 2-列縱向合併 1-列橫向合併 (sql 兩次查詢的列合併,或者行合併)1. 一個列有幾種類型,分別計算各類型條數

更新日期:2020-01-19 10:42

目錄

5.列轉行

4.行轉列

3.縱向合併(增加數):將兩條sql的查詢結果合併在一起顯示

2.橫向合併(增加數):將兩條sql的查詢結果合併在一起顯示

1.sql-- 一個列有幾種類型,分別計算各類型條數

.
.
.
.
.

5.列轉行

4.行轉列

3.列縱向合併(增加數):將兩條sql的查詢結果拼接在一起顯示

使用 FULL JOIN(…) ON

在這裏插入圖片描述

	--查詢 幾個總廠區的 一級編號和 廠區名稱
	SELECT CLASSZERO,FACTORY_NAME FROM TB_FACTORYINFO WHERE ENERGYGRADE='0'

	--將幾個總廠區的包含的所有車間的 總電量求和
	SELECT CONVERT(VARCHAR(3),A.FACTORY_CODE,120) CLASSZERO,SUM(A.POSITIVEZYGDL)TYPENUMBER FROM TB_DAILYAMMETER A
	GROUP BY CONVERT(VARCHAR(3), A.FACTORY_CODE,120)

--查詢幾個總廠區的 總用電量
SELECT ISNULL(A.CLASSZERO,0)CLASSZERO,ISNULL(A.FACTORY_NAME,0)FACTORY_NAME,ISNULL(B.TYPENUMBER,0) TYPENUMBER 
FROM (SELECT CLASSZERO,FACTORY_NAME FROM TB_FACTORYINFO WHERE ENERGYGRADE='0') A  
FULL JOIN (SELECT SUM(POSITIVEZYGDL)TYPENUMBER ,CONVERT(VARCHAR(3),FACTORY_CODE,120) CLASSZERO FROM TB_DAILYAMMETER GROUP BY CONVERT(VARCHAR(3),FACTORY_CODE,120)) B 
ON A.CLASSZERO=B.CLASSZERO 

在這裏插入圖片描述
在這裏插入圖片描述

3.1首頁-能源日統計,只查詢幾個總廠區(一級廠區)的 0水/1電/2氣/3風==ENERGYTYPE

在這裏插入圖片描述
在這裏插入圖片描述

--6.首頁-今日能源統計,只查詢幾個總廠區(一級廠區)的 0水/1電/2氣/3風==ENERGYTYPE
   --UNION ALL 將兩條sql語句合併爲一條 (PS:注意要列數相同,列的數據類型也相同)
   --ISNULL(A.CLASSZERO,0) 判斷列是否爲空,如果爲空,設置臨時顯示值爲0.
   --SUM(POSITIVEZYGDL)TYPENUMBER 求POSITIVEZYGDL列的總和 ,並設置別名爲TYPENUMBER,index_device實體類中有這個屬性,只是爲了首頁上顯示方便而添加
   --CONVERT(VARCHAR(3),FACTORY_CODE,120) 截斷字符串(FACTORY_CODE)只保留3位
   --DATETYPE='0'  日期類型爲0本日  
   --ENERGYTYPE='2' 設置本條數據 能源類型默認爲0水1電2氣 3風,,index_device實體類中有這個屬性,只是爲了首頁上顯示方便而添加
   --CONVERT(NUMERIC(10,2),B.TYPENUMBER)  設置保留2位小數點,小數點前保留10位,加上小數點總共保留12位
SELECT ENERGYTYPE='1',ISNULL(A.FACTORY_NAME,0)FACTORY_NAME,ISNULL(CONVERT(NUMERIC(10,2),B.TYPENUMBER),0) TYPENUMBER FROM (SELECT CLASSZERO,FACTORY_NAME FROM TB_FACTORYINFO WHERE ENERGYGRADE='0') A 
 FULL JOIN (SELECT SUM(POSITIVEZYGDL)TYPENUMBER ,CONVERT(VARCHAR(3),FACTORY_CODE,120) CLASSZERO FROM TB_DAILYAMMETER WHERE DATETYPE='0' GROUP BY CONVERT(VARCHAR(3),FACTORY_CODE,120)) B ON A.CLASSZERO=B.CLASSZERO 
UNION ALL

SELECT ENERGYTYPE='0',ISNULL(A.FACTORY_NAME,0)FACTORY_NAME,ISNULL(CONVERT(NUMERIC(10,2),B.TYPENUMBER),0) TYPENUMBER FROM (SELECT CLASSZERO,FACTORY_NAME FROM TB_FACTORYINFO WHERE ENERGYGRADE='0') A 
 FULL JOIN (SELECT SUM(WATERMETERINGFLOW)TYPENUMBER ,CONVERT(VARCHAR(3),FACTORY_CODE,120) CLASSZERO FROM tb_dailywater WHERE DATETYPE='0' GROUP BY CONVERT(VARCHAR(3),FACTORY_CODE,120)) B ON A.CLASSZERO=B.CLASSZERO 
UNION ALL

SELECT ENERGYTYPE='2',ISNULL(A.FACTORY_NAME,0)FACTORY_NAME,ISNULL(CONVERT(NUMERIC(10,2),B.TYPENUMBER),0) TYPENUMBER FROM (SELECT CLASSZERO,FACTORY_NAME FROM TB_FACTORYINFO WHERE ENERGYGRADE='0') A 
 FULL JOIN (SELECT SUM(GASMETEREDFLOW)TYPENUMBER ,CONVERT(VARCHAR(3),FACTORY_CODE,120) CLASSZERO FROM TB_DAILYGAS WHERE DATETYPE='0' GROUP BY CONVERT(VARCHAR(3),FACTORY_CODE,120)) B ON A.CLASSZERO=B.CLASSZERO 

2.列橫向合併(增加數):將兩條sql的查詢結果拼接在一起顯示

使用 UNION ALL
在這裏插入圖片描述

--獲取不同類型設備的數量
SELECT energytype,count(energytype)typenumber FROM tb_device GROUP BY energytype 
--設備總數
select count(*)as totalnumber from tb_device 


--3.將兩條sql語句合併爲一條 (PS:注意要列數相同,列的數據類型也相同)
SELECT energytype,count(energytype)typenumber FROM tb_device GROUP BY energytype  
UNION ALL 
select '總條數', count(*) from tb_device

1.sql–一個列有幾種類型,分別計算各類型條數

SQL統計一個列中不同值的數量,並且根據這個數量的排序做一些額外的處理

在這裏插入圖片描述
在這裏插入圖片描述

--獲取不同類型設備的數量
--寫法1:
SELECT energytype,count(energytype)typenumber FROM tb_device GROUP BY energytype 
--寫法2:
SELECT energytype,count(*)typenumber FROM tb_device GROUP BY energytype 

--帶排序的:
SELECT energytype,count(energytype)typenumber FROM tb_device GROUP BY energytype 
ORDER BY typenumber desc

.
.
.

.
.

.
.
.

參考於

  1. https://blog.csdn.net/suhiymof/article/details/81221286
  2. https://blog.csdn.net/weixin_42467211/article/details/84345261
  3. https://bbs.csdn.net/topics/390797414?page=1
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章