更新日期: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
.
.
.
.
.
.
.
.
參考於