SAS SQL 跨表查詢及多個欄位聯合查詢程序分享

2021-02-19 臨床試驗統計學應用

  在實際工作中經常碰到多個表之間的查詢,通過某個或某幾個索引欄位實現跨庫查詢,信息合併。下面的內容可能說法不夠專業,比較業餘,分享一段小程序。

   目的:根據ICD-10(疾病編碼)將數據集每個觀測對象分不同的類,如腦卒中會有出血性、缺血性和其他三大類,按照CN-DRGs內科DRGs組為兩類,分別為顱內出血性和腦缺血性,出血性和缺血性疾病編碼放在不同的數據集中,編碼有不同的變量名稱,根據這兩部分的編碼分別給每個觀測對象打上類別標記。

國際疾病分類(International Classification of Diseases ,ICD),是WHO制定的國際統一的疾病分類方法,它根據疾病的病因、病理、臨床表現和解剖位置等特性,將疾病分門別類,使其成為一個有序的組合,並用編碼的方法來表示的系統。全世界通用的是第10次修訂本《疾病和有關健康問題的國際統計分類》,仍保留了ICD的簡稱,並被統稱為ICD-10。

總之,問題都很簡單,就是人群分類。

   不管選擇什麼思路,理清邏輯很重要。

 例子選用思路2的方法

/*編碼1數據集*/

data condition1;

input x1 $3.;

cards;

001

002

003

;

run;

/*編碼2數據集*/

data condition2;

input x2 $3.;

cards;

005

006

008

;

run;

/*待分類數據集*/

data test;

input ID $3.;

cards;

001

002

003

005

006

007

008

;

run;

/*分類標記*/

proc sql noprint;

 create table all as

  select * , "condition1" as data_set_s  from test

    where ID  in (select x1  from condition1)

         union

  select  * , "condition2" as data_set_s  from test

     where ID in (select x2 from condition2)

         union

  select * , "other" as  data_set_s  from test

    where ID not in

     (select x1 as x from condition1

         union

     select x2 as x from condition2); /*統一變量名稱*/

quit;

上述例子中test數據的ID需要在兩個數據集的兩個變量值裡查詢,子查詢不能在多列裡查詢,因此需要將X1和X2兩個變量值放在一列中,即統一變量名稱,再union一下。


思路1的例子,合併步沒加上:


 上述兩種思路比較,一步到位是很簡單的。

相關焦點

  • 一次神奇的 sql 查詢經歷,group by 慢查詢優化記錄
    一、問題背景  現網出現慢查詢,在500萬數量級的情況下,單表查詢速度在30多秒,需要對sql進行優化,sql如下:  後來我用多個同事的電腦實驗,最後得出的結論是:  是因為我用的SQLyog!  哎,現在發現了,只有用sqlyog執行這個「優化後」的sql會是0.8秒,在navicat和伺服器上直接執行,都是30多秒。
  • VLOOKUP亂序欄位查詢
    ,有同學發現數據源中的多個工作表中欄位順序是一致的,於是提問當各個工作表中欄位順序不一致時,如何進行數據查詢呢?今天要講的就是VLOOKUP函數亂序欄位查詢的技術。本教程內容擔心記不全的話,可以分享到朋友圈給自己備份一份。除了本文內容,還想全面、系統、快速提升Excel技能,少走彎路的同學,請搜索微信公眾號「LiRuiExcel」點擊底部菜單,或下方二維碼進知識店鋪。
  • 優化SQL查詢:如何寫出高性能SQL語句
    4、 使用「臨時表」暫存中間結果簡化SQL語句的重要方法就是採用臨時表暫存中間結果,但是,臨時表的好處遠遠不止這些,將臨時結果暫存在臨時表,後面的查詢就在tempdb中了,這可以避免程序中多次掃描主表,也大大減少了程序執行中「共享鎖」阻塞「更新鎖」,減少了阻塞,提高了並發性能。
  • SQL入門教程第03課::SQL查詢中欄位技巧的總結
    SQL的數據查詢和操縱語句包括SELECT、UPDATE、INSERT、DELETE等,也就是所謂的查改增刪,其中最重要、使用最頻繁的是SELECT查詢語句。查詢按照複雜性劃分,可以從一個簡單的語句返回所有表中所有的記錄,到用一個語句連結多個表並定義多種搜索條件……現在,就讓我們從最簡單的部分走起吧——走你,少年。
  • sqltoy-orm-4.16.16 發版,並行查詢場景增強、級聯增加排序
    對spring.sqltoy 配置的校驗,避免有開發者寫成sqltoy.xxx遺漏掉spring前綴7、sqltoy中增強sqlResourcesDir 格式的交易,防止開發者寫成文件匹配表達式8、強化未匹配到sql的sqlId執行錯誤提示,避免開發者遇到錯誤時無法定位錯誤9、updateByQuery增加統一欄位處理,針對最後修改時間、最後修改人等公共欄位
  • Excel VBA+ADO+SQL入門教程003:SQL查詢中欄位技巧的總結
    Excel的行與列2,SELECT基本語法3,如何使用SQL查詢工作表中的欄位    3.1,單欄位查詢    3.2,多欄位查詢    3.3,別名的使用    3.4,使用通配符查詢所有欄位    3.5,含有特殊字符的欄位查詢
  • SQL基礎培訓--SQL語言基本概念及簡單查詢
    什麼是SQL語句,及簡單的寫法sql 語句是對資料庫進行操作的一種語言。結構化查詢語言(Structured Query Language)簡稱SQL,結構化查詢語言是一種資料庫查詢和程序設計語言,用於存取數據以及查詢、更新和管理關係資料庫系統。
  • MySQL資料庫SQL查詢優化技巧之SELECT
    ,以及SELECT的執行流程,了解了SELECT的執行流程還是很重要的,重要我們才能有針對性地去進行優化,比如select在執行的時候 會把所以的欄位編程成大寫字母,這樣我們在起初編寫SELECT語句時就可以把所以的字母進行大寫,這樣就省去了程序為把SQL語句變成大寫的消耗,速度自然就會提高。
  • 打造出色查詢:如何優化SQL查詢?
    1.嘗試不去用select *來查詢SQL,而是選擇專用欄位。· 這樣做可能不會使用覆蓋索引,會導致一個查詢返回到表中。2.如果已知只有一個查詢結果,推薦使用limit 1假設有一張員工表格,想在其中找到一名叫jay的員工。
  • 資料庫分頁查詢的幾種實現思路
    跨庫分頁查詢當資料庫是單實例資料庫時,實現分頁查詢是很簡單的,但是當系統的數據量大到一定程度之後,超過了單機可垂直擴展的上限之後,就要對數據進行分庫橫向擴展,數據存儲到多個節點中演變成分布式資料庫。分布式資料庫要求業務建表時指定一個欄位為均衡欄位來做為分庫路由因子。
  • 產品經理學SQL(二)一天學會用SQL解決業務查詢問題
    本篇文章意在幫助大家系統地入門SQL,教大家如何解決sql查詢任務。前言回顧一下,上一篇文章我們已經知道了SQL語言的基本框架,並能完成簡單的單表查詢和雙表連接查詢。這篇文章希望能幫助你系統地入門SQL,從而解決產品經理80%的sql查詢任務。和上篇的一個小時入門SQL一樣,這篇文章的建議學習時間為一天。
  • 分享SQL語句查詢表中數據的實例操作解析
    今天和大家分享下用SQL語句查詢表的各種操作。主要有:給欄位取別名、Top的用法、Distinct的用法、COUNT的用法、MAX的用法、MIN的用法、SUM的用法、AVG的用法、COUNT的用法、Between 的用法。
  • sagacity-sqltoy-4.16.3 發版,融合 jpa 式對象 crud+極致查詢!
    : sqltoy是全新一代的ORM框架,兼顧jpa對象式操作的優勢,同時極大增強了查詢功能,輔以科學的sql編寫模式、巧妙的緩存翻譯集成、極致的分頁優化以及針對大規模數據下的分庫分表、超複雜場景下的mongodb、elastic、clickhouse組合應用!
  • 多表組合查詢——Python操作Mysql資料庫
    每張表都有一個自增量的ID欄位,作為該表的主鍵,同時,成績表裡有兩個欄位「student_ID」和「subject_ID」與學生表的ID、學科表的ID相關聯,同時在這三張表裡都插入了一些基礎數據,通過已插入的這些基礎數據我們來進行分析和介紹。下面是三張表的建表語句和一些基礎數據:
  • 用Select×進行SQL查詢的七宗罪
    【51CTO.com快譯】如今,網上許多文章都已明確地指出:使用「SELECT * 」作為SQL查詢方式是一種極其危險的代碼書寫習慣。開發人員應該儘量在自己的程序中避免出現此類查詢,取而代之的應該是明確地指定要查詢的列名。不過,大家可能只是「知其然,而不知其所以然」。
  • MySQL 單表查詢
    1.通過from找到將要查詢的表   2.where規定查詢條件,在表記錄中逐行進行查詢並篩選出符合規則的記錄   3.將查到的記錄進行欄位分組group by,如果沒有進行分組,則默認為一組   4.將分組得到的結果進行having篩選,可使用聚和函數(where時不可使用聚合函數)   5.執行select準備列印   6.執行distinct
  • mybatis框架之多表高級查詢
    學習內容安排如下:補充說明知識點:resultMap,sql片段。mybatis中的高級查詢,即多表關聯查詢。使用result子標籤也可以將數據表中的欄位和實體類屬性關聯起來:column對應的也就是資料庫中的列名。property對應的也就是實體類的屬性。
  • SQL「多欄位模糊匹配關鍵字查詢」
    首頁 > 語言 > 關鍵詞 > SQL最新資訊 > 正文 SQL「多欄位模糊匹配關鍵字查詢」
  • mysql的查詢、子查詢及連接查詢
    「分組依據欄位」,其他欄位若想出現在select中則必須包含在聚合函數中。(把內層的查詢結果當成臨時表,供外層sql再次查詢。3、exists型子查詢(把外層sql的結果,拿到內層sql去測試,如果內層的sql成立,則該行取出。內層查詢是exists後的查詢。)
  • 資料庫:一張表中多個欄位同時引用另一張表時如何查詢
    dic表info表在info表中,province_id和county_id都引用了dic表的id。那針對這樣的情況要怎麼進行關聯查詢,同時展示出province_id和county_id對應的名稱呢?可能剛接觸資料庫查詢的朋友可能會有點蒙圈。其實這裡如果把dic表當作兩張表,一張是針對province_id的表,一張是針對county_id的表,是不是就好理解多了呢。