我需要在两个单独的表上执行各种联接/联合,以将我的结果合并到一个表中。首先,我将分享我所拥有的和我需要的,然后我将分享我当前的非工作解决方案。
我有的:
每个表都包含一个执行的操作列表,每个操作都有一个
opPatient
(所有患者都进行过多次手术),opClassification
(1、2、3 或 4)opDate
,,,opPrice
。A
Start
和End
查询日期。
我需要的:
生成一个带有以下内容的表:
- 所有不同的列表
opPatients
- 对于每位患者:
opprice
所有操作的总和- 分类为 4 的所有操作的总和
opPrice
(分类 4 仅在 中table2
) - 所有操作的总数
- 分类为 3 的操作总数
- 分类为 2 的操作总数
- 上述所有的
WHERE opDate >= @StartDate AND opDate <= EndDate
当前解决方案(显然不起作用)
设置日期
start
和end
日期(此处没有错误)SET @StartDate = DATEADD(DAY, -(DATEPART(Day, @Date)-1), @Date); SET @EndDate = DATEADD(DAY, -1, (DATEADD(MONTH, 1, @StartDate))); SELECT Operation = (SELECT DISTINCT operation FROM table1 UNION SELECT DISTINCT operation FROM table2), TotalPrice = CAST(opPrice) AS MONEY), TotalOps = COUNT(*), opC4 = COUNT(CASE WHEN opClassification = 4 THEN 1 ELSE Null END) WHERE opDate <= @EndDate AND opDate >= @StartDate FROM table2, opC3 = COUNT (CASE WHEN opClassification = 3 THEN 1 ELSE Null END), opC2 = COUNT (CASE WHEN opClassification = 2 THEN 1 ELSE Null END) FROM table1, table2 WHERE table1.opDate <= @EndDate AND table1.opDate >= @StartDate ORDER BY Operation
所有帮助、提示和指示将不胜感激!
谢谢!!此致, Nooby 编码器。