聯合查詢(姑且稱之為聯合查詢)的最差解

来源:https://www.cnblogs.com/Mysdm/archive/2019/06/27/11096790.html
-Advertisement-
Play Games

1.數據如下 TimePoint | PollutantCode | StatusName | Value | | | 2019 03 16 01:00:00.000|PM10|大氣溫度|11.096 2019 03 16 01:00:00.000|PM10|大氣壓力|102.354 2019 03 ...


1.數據如下

TimePoint PollutantCode StatusName Value
2019-03-16 01:00:00.000 PM10 大氣溫度 11.096
2019-03-16 01:00:00.000 PM10 大氣壓力 102.354
2019-03-16 01:00:00.000 PM2.5 大氣溫度 14.525
2019-03-16 01:00:00.000 PM2.5 大氣壓力 101.358
2019-03-16 02:00:00.000 PM10 大氣溫度 10.134
2019-03-16 02:00:00.000 PM10 大氣壓力 102.312
2019-03-16 02:00:00.000 PM2.5 大氣溫度 13.883
2019-03-16 02:00:00.000 PM2.5 大氣壓力 101.3
2019-03-16 03:00:00.000 PM10 大氣溫度 10.368
2019-03-16 03:00:00.000 PM10 大氣壓力 102.249
2019-03-16 03:00:00.000 PM2.5 大氣溫度 14.033
2019-03-16 03:00:00.000 PM2.5 大氣壓力 101.258

2.要求

12條數據可以變成3條數據,並且列變成(TimePoint,PM2_5大氣溫度,PM2_5大氣壓力,PM10大氣溫度,PM10大氣壓力)

3.建表

IF OBJECT_ID('tempdb..#TestTable') IS NOT NULL
    DROP TABLE #TestTable;

CREATE TABLE #TestTable
(
    Id INT IDENTITY(1,1),  
    TimePoint DATETIME, 
    PollutantCode VARCHAR(10),
    StatusName NVARCHAR(50),
    Value VARCHAR(50)
)

INSERT INTO #TestTable(TimePoint,PollutantCode,StatusName,Value)
SELECT       '2019-03-16 01:00:00.000','PM10', '大氣溫度','11.096'
UNION SELECT '2019-03-16 01:00:00.000' , 'PM10','大氣壓力','102.354'
UNION SELECT '2019-03-16 01:00:00.000' , 'PM2.5','大氣溫度','14.525'
UNION SELECT '2019-03-16 01:00:00.000' , 'PM2.5','大氣壓力','101.358'
UNION SELECT '2019-03-16 02:00:00.000' , 'PM10','大氣溫度','10.134'
UNION SELECT '2019-03-16 02:00:00.000' , 'PM10','大氣壓力','102.312'
UNION SELECT '2019-03-16 02:00:00.000' , 'PM2.5','大氣溫度','13.883'
UNION SELECT '2019-03-16 02:00:00.000' , 'PM2.5','大氣壓力','101.3'
UNION SELECT '2019-03-16 03:00:00.000' , 'PM10','大氣溫度','10.368'
UNION SELECT '2019-03-16 03:00:00.000' , 'PM10','大氣壓力','102.249'
UNION SELECT '2019-03-16 03:00:00.000' , 'PM2.5','大氣溫度','14.033'
UNION SELECT '2019-03-16 03:00:00.000' , 'PM2.5','大氣壓力','101.258'

4.Show your the code(最差解)

SELECT a.TimePoint,a.Value PM2_5大氣溫度,b.Value PM2_5大氣壓力,d.Value PM10大氣溫度,c.Value PM10大氣壓力
FROM
(
    SELECT *
    FROM #TestTable
    WHERE StatusName = '大氣溫度'
          AND PollutantCode = 'PM2.5'
) a
    LEFT JOIN
    (
        SELECT *
        FROM #TestTable
        WHERE StatusName = '大氣壓力'
              AND PollutantCode = 'PM2.5'
    ) b
        ON a.TimePoint = b.TimePoint
     LEFT JOIN
    (
        SELECT *
        FROM #TestTable
        WHERE StatusName = '大氣壓力'
              AND PollutantCode = 'PM10'
    ) c
        ON a.TimePoint = c.TimePoint
     LEFT JOIN
    (
        SELECT *
        FROM #TestTable
        WHERE StatusName = '大氣溫度'
              AND PollutantCode = 'PM10'
    ) d
        ON a.TimePoint = d.TimePoint

5.這種不知道算不算行轉列...應該有更好的解決方案...期待有緣人可以解答...


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1.需求概括 我們知道,在SQL Server Alwayson 架構中,有多種虛擬IP,例如 WindowsCluster IP,ListenIP,角色高可用性IP(類似於偵聽IP)。在某些條件下,例如系統故障,會觸發虛擬IP的漂移,如何高效率、低延遲、更好地監控IP漂移情況,是我們DB的一個重要 ...
  • linux 安裝後 mysql5.7 字元集預設是拉丁,不能存儲中文,修改步驟如下: 在 vim /etc/mysql/my.cnf 修改配置文件 在[mysqld] 下添加如下配置 重啟mysql服務 查看當前字元編碼 重新進入則修改成功 ...
  • SQL簡介 SQL,即Structured Query Language 結構化查詢語言,用於存取數據以及查詢、更新和管理關係型資料庫。 常見的關係型資料庫有MySQL、SQL Server、Access、Oracle 等,SQL是關係型資料庫的通用語言。 SQL只是一個標準,由各關係資料庫廠商來實 ...
  • SQL語句(增、刪、改、查)一、增:有4種方法1.使用insert插入單行數據:語法:insert By hyx1013 at 2014-05-07 142 閱讀 0 回覆 0.0 希賽幣 By hyx1013 at 2014-05-07 142 閱讀 0 回覆 0.0 希賽幣 請點擊下麵回答中的" ...
  • 背景: 1. 檢查C:\Windows\System32\drivers\etc下的hosts文件有: 127.0.0.1 localhost 2.MySQL的my.ini配置文件: [mysqld] 節點下已經加入以下兩行代碼 skip-name-resolve #忽略主機名的方式訪問 lower ...
  • 一、添加操作 1. 添加節點: create (x:學生{studentId:'1001',age:20} 2. 添加關係: 對現有的節點添加關係 match (x:學生{studentId:1001}),(y:教師{tid:'09'}) create (x)-[jx:課程{name:'高數'}]- ...
  • 1. 利用xshell連接好服務後,輸入 wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm 下載軟體安裝包文件 2. 輸入 yum localinstall mysql57-community-relea ...
  • 一、清理老的mysql (1)卸載已有的mysql 查找以前是否裝有mysql命令: 1 rpm -qa|grep -i mysql 停止mysql服務,卸載之前安裝的mysql 1 rpm -ev 包名 如果卸載過程中報依賴錯誤,直接在卸載命名後面加參數 --nodeps 1 rpm -ev 包名 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...