簡體   English   中英

如何使此 sql 查詢適用於多列

[英]How to make this sql query work for multiple columns

我有一個如下結構的查詢,它檢查給定列中的任何條目是否不是 null,如果找到匹配項(非空值),則立即返回 Y,如果所有值都是 null,則返回 N。它適用於名為 first_name 的列,但我需要使其也適用於其他列,即 last_name、middle_name,最好全部在一個查詢中以節省執行時間。 必須為每個指定的列返回 Y 或 N。

SELECT CASE
  WHEN EXISTS(SELECT *
  FROM (patient AS p JOIN patient_score AS s ON p.patient_id=s.patient_id)
  WHERE first_name IS NOT NULL) 
  THEN 'Y'
  ELSE 'N'
  END AS your_result 

我有另一個查詢,它是一種替代方法並且做同樣的工作(1/0 而不是 Y/N)。 但我也不知道如何使它與多列一起使用。 可以通過提供多個列名來工作的過程也可以工作。

SELECT COUNT(*) AS fn FROM 
  (SELECT 1 
    FROM (patient AS p JOIN patient_score AS s ON p.patient_id=s.patient_id) 
    WHERE first_name IS NOT NULL
    LIMIT 1) AS T;

我認為這是您想要的查詢,您必須為每個添加一個 SELECT 元素(CASE WHEN SUM(CASE WHEN column_name IS NULL THEN 0 ELSE 1 END)> 0 THEN 'Y' ELSE AS_N' END)你想檢查。

SELECT 
    CASE WHEN SUM(CASE WHEN first_name IS NULL THEN 0 ELSE 1 END) > 0 THEN 'Y' ELSE 'N' END AS first_name

FROM patient AS p
INNER JOIN patient_score AS s ON p.patient_id = s.patient_id

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM