gpt4 book ai didi

mysql - 从三张表中提取数据,一张表作为中间

转载 作者:行者123 更新时间:2023-11-30 22:57:46 27 4
gpt4 key购买 nike

在这种情况下请帮助我。

我想要的输出应该显示在下面的表格示例中。

点击here

  • 对于第一个单元格,我需要显示已经完成 HIV 过滤且小于 19 岁的男性。
    • 同样转到下一个单元格,我需要显示已经完成 HIV 过滤的女性,并且她不到 19 岁,同样转到下一行不同年龄组。
    • 性别和年龄组在包含 GENDER 和 DOB 列的 DONOR_MST 表中
    • 已过滤 HIV 的患者总数在表 BAT_TESDET 中,列为 RES_HIV
    • 但是,这两个表没有任何匹配的主键。

然后我确实得到了一个名为 PRE_SCREEN 的表,其中包含 DONOR_MST 和 BAT_TESDET 中的匹配列

各表PK如下:

  • 包含列 DONOR_ID 的表 DONOR_MST
  • 包含列 DISP_ID 和 BARCODE 的表 BAT_TESDET
  • 包含列 DONOR_ID 和 BARCODE 的表 PRE_SCREEN

我确实尝试过使用 INNER JOIN 但它没有用。下面是我的代码

     SELECT 
(CASE c.GENDER WHEN '1' THEN 1 ELSE 0 END) AS MALE,
(CASE c.GENDER WHEN '2' THEN 1 ELSE 0 END) AS FEMALE,
(CASE WHEN (datediff(YEAR, c.DOB, getdate())) < 19 THEN 1 ELSE 0 END )
(CASE WHEN (datediff(YEAR, c.DOB, getdate())) BETWEEN 20 AND 24 THEN 1 ELSE 0 END )
(CASE WHEN (datediff(YEAR, c.DOB, getdate())) BETWEEN 25 AND 29 THEN 1 ELSE 0 END )
(CASE WHEN (datediff(YEAR, c.DOB, getdate())) BETWEEN 30 AND 34 THEN 1 ELSE 0 END )
(CASE WHEN (datediff(YEAR, c.DOB, getdate())) BETWEEN 35 AND 39 THEN 1 ELSE 0 END )
(CASE WHEN (datediff(YEAR, c.DOB, getdate())) BETWEEN 40 AND 44 THEN 1 ELSE 0 END )
(CASE WHEN (datediff(YEAR, c.DOB, getdate())) BETWEEN 45 AND 49 THEN 1 ELSE 0 END )
(CASE WHEN (datediff(YEAR, c.DOB, getdate())) BETWEEN 50 AND 54 THEN 1 ELSE 0 END )
(CASE WHEN (datediff(YEAR, c.DOB, getdate())) > 55 THEN 1 ELSE 0 END )

FROM dbo.DONOR_MST c
INNER JOIN dbo.PRE_SCREEN b
ON c.DONOR_ID LIKE b.DONOR_ID
INNER JOIN BAT_TESDET a
ON b.BARCODE = a.BARCODE
WHERE
b.IS_ELIGIBLE = '1'
AND b.SCR_DATE >= @STARTDATE
AND b.SCR_DATE <= @ENDDATE

我的问题:

如何链接三个表

最佳答案

为了获取这些信息,这里有一个查询命题:

SELECT D.DOB
,SUM(CASE
WHEN D.GENDER = 'MALE' THEN 1
ELSE 0
END) AS [MALE]
,SUM(CASE
WHEN D.GENDER = 'FEMALE' THEN 1
ELSE 0
END) AS [FEMALE]
,COUNT(*) AS [TOTAL]
FROM DONOR_MST D
INNER JOIN PRE_SCREEN P ON P.DONOR_ID = D.DONOR_ID
INNER JOIN BAT_TESDET B ON B.BARCODE = P.BARCODE
GROUP BY D.DOB

希望对您有所帮助。

关于mysql - 从三张表中提取数据,一张表作为中间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25505099/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com