我有一个记录管理员访问的表。表中包含caretakerCode
、patientID
、visitDate
、visitAddress
。
我需要显示同一护理人员在同一天对多个患者进行护理的行中的所有信息。下面是一个例子。
caretakerCode patientID visitDate visitAddress
---------------------------------------------------------------
John Q 13 2022/01/13 27 Hamilton Rd
John Q 13 2022/01/14 27 Hamilton Rd
John Q 15 2022/01/14 101 Congress St
Melanie B 22 2022/01/15 3 Redroad Ct
在这个例子中,输出将是
caretakerCode patientID visitDate visitAddress
---------------------------------------------------------------
John Q 13 2022/01/14 27 Hamilton Rd
John Q 15 2022/01/15 101 Congress St
我试过连接,但我不确定如何使它超过2列。任何帮助将非常感激!
谢谢。
我认为你的例子是错误的,因为你想实现在同一天显示访问量。您的示例显示了2个不同的日期:2022/01/14和2022/01/15。
假设表名为dbo. tvisitors .
创建测试表USE tempdb;
CREATE TABLE dbo.tVisits
(
caretakerCode nvarchar(50) NOT NULL,
patientID int NOT NULL,
visitDate date NOT NULL,
visitAddress nvarchar(512) NOT NULL
);
插入测试数据
INSERT INTO dbo.tVisits
(
caretakerCode,
patientID,
visitDate,
visitAddress
)
VALUES
( N'John Q', 13, '20220113', N'27 Hamilton Rd' ),
( N'John Q', 13, '20220114', N'27 Hamilton Rd' ),
( N'John Q', 15, '20220114', N'101 Congress St' ),
( N'Melanie B', 22, '20220115', N'3 Redroad Ct' );
执行查询;WITH CTE AS
(
SELECT
V.caretakerCode,
V.visitDate
FROM dbo.tVisits V
GROUP BY
V.caretakerCode,
V.visitDate
HAVING COUNT(*) > 1
)
SELECT
V.caretakerCode,
V.patientID,
V.visitDate,
V.visitAddress
FROM dbo.tVisits V
INNER JOIN CTE ON
CTE.caretakerCode = V.caretakerCode
AND CTE.visitDate = V.visitDate
ORDER BY 1,3,2;
返回行caretakerCode | patientID | visitDate | visitAddress | 约翰Q | 13 | 2022-01-14 | 27汉密尔顿Rd |
---|---|---|---|
约翰Q | 15 | 2022-01-14 | 101年国会圣 |