【发布时间】:2021-04-24 15:59:07
【问题描述】:
关于堆栈溢出的第一个问题。我在一家医学检测公司工作,他们需要一张表格,显示 2021 年每个州有多少人接受了每种类型的检测。我的 adr.state 表中有所有州,p.name 表中有所有检测类型.
我写了以下查询:
SELECT
adr.state,
'TaqPath COVID-19 rRT-PCR Assay',
'TaqPath COVID-19 rRT-PCR Assay (Saliva Specimen)',
'TaqPath COVID-19 rRT-PCR Assay (Throat Specimen)',
'Beckman Access SARS-CoV-2 IgG Test',
'PSA, Free',
'Colorectal Cancer Current Risk'
FROM
(SELECT DISTINCT
r.requisitionNumber,
adr.state,
p.name
FROM
copia.copia.Requisition AS r
JOIN
copia.copia.OrderedPanel AS op ON op.requisitionKey = r.requisitionKey
JOIN
copia.copia.panel AS p ON p.panelKey = op.panelKey
JOIN
copia.copia.Location AS loc ON loc.locationKey = r.orderingLocationKey
JOIN
copia.copia.Address AS adr ON adr.addressKey = loc.addressKey
WHERE
copia.dbo.FixDate(r.finalDeliveryStamp) BETWEEN '1/1/2021' AND '4/24/2021'
AND p.name NOT LIKE '%body mass index%'
AND p.name NOT LIKE '%hold account%') p
PIVOT
(SUM(adr.state)
FOR p.name IN (['TaqPath COVID-19 rRT-PCR Assay'],
['TaqPath COVID-19 rRT-PCR Assay (Saliva Specimen)'],
['TaqPath COVID-19 rRT-PCR Assay (Throat Specimen)'],
['Beckman Access SARS-CoV-2 IgG Test'],
['PSA, Free'],
['Colorectal Cancer Current Risk'])
) AS PVT;
我做错了什么?我收到这些错误:
消息 107,第 15 级,状态 1,第 34 行
列前缀“adr”与查询中使用的表名或别名不匹配。消息 4104,第 16 级,状态 1,第 2 行
无法绑定多部分标识符“adr.state”。
回顾一下,我需要一个矩阵,其中列是测试名称,行是每种状态类型,其中值是与该状态匹配的测试类型的总和。
非常感谢!
【问题讨论】:
-
你给你的子查询别名 p ,在子查询之外无法识别 adr :所以
sum(p.state) -
请提供样本数据和期望的结果。
-
您应该在
pivot和外部select中删除旋转列名周围的引号,只需使用[]引用列名
标签: sql sql-server database tsql