Tsql 尝试学习T-SQL子查询语法
我是新来的,所以希望我能正确地发布这篇文章 我有一个表PTC证书周期,希望获得表中每个患者ID的最大周期号。我可以让我的视图查看另一个视图,如下所示:Tsql 尝试学习T-SQL子查询语法,tsql,Tsql,我是新来的,所以希望我能正确地发布这篇文章 我有一个表PTC证书周期,希望获得表中每个患者ID的最大周期号。我可以让我的视图查看另一个视图,如下所示: SELECT TOP (100) PERCENT dbo.PTC_CERT_PERIOD.CERT_PERIOD_ID , dbo.PTC_CERT_PERIOD.PATIENT_ID , dbo.PTC_CERT_PERIOD.CERTIFICATION_DATE , dbo.PTC_CERT_PERIOD.CERT_END
SELECT TOP (100) PERCENT
dbo.PTC_CERT_PERIOD.CERT_PERIOD_ID
, dbo.PTC_CERT_PERIOD.PATIENT_ID
, dbo.PTC_CERT_PERIOD.CERTIFICATION_DATE
, dbo.PTC_CERT_PERIOD.CERT_END_DATE
, dbo.PTC_CERT_PERIOD.PAY_SOURCE_POINTER
, dbo.PTC_CERT_PERIOD.IS_ACTIVE
, dbo.VW_SDH_CAS_MaxCertPeriod1.MaxCertPeriod
, dbo.PTC_CERT_PERIOD.CREATE_DATE
FROM
dbo.PTC_CERT_PERIOD
INNER JOIN dbo.VW_SDH_CAS_MaxCertPeriod1
ON dbo.PTC_CERT_PERIOD.PATIENT_ID = dbo.VW_SDH_CAS_MaxCertPeriod1.PATIENT_ID
AND dbo.PTC_CERT_PERIOD.PERIOD_NO = dbo.VW_SDH_CAS_MaxCertPeriod1.MaxCertPeriod
但在我看来,我应该能够编写一个子查询来做同样的事情,而且我无法获得子查询的正确语法。我已经尝试了几个小时,最近一次失败的迭代是:
SELECT
CERT_PERIOD_ID
, PATIENT_ID
, CERTIFICATION_DATE
, CERT_END_DATE
, PAY_SOURCE_POINTER
, IS_ACTIVE
, CREATE_DATE
, PERIOD_NO
FROM
dbo.PTC_CERT_PERIOD
WHERE
(PERIOD_NO IN
(
SELECT
PATIENT_ID AS MaxPtID
, MAX(PERIOD_NO) AS MaxCertPeriod
FROM
dbo.PTC_CERT_PERIOD AS PTC_CERT_PERIOD_1
)
)
似乎我尝试的任何东西都会收到如下错误消息“列dbo.PTC-CERT\u PERIOD.PATIENT\u ID在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句中。当子查询未引入EXISTS时,只能在选择列表中指定一个表达式。我已经使用了几个EXISTS statemsnt,如果它们运行的结果很差,列出了患者的所有周期号,而不仅仅是最大值。有人能给我指出正确的轨道吗?当子查询用作表时,它们需要一个别名。。。只要添加任何内容。。。我通常用Z
SELECT CERT_PERIOD_ID, PATIENT_ID, CERTIFICATION_DATE,
CERT_END_DATE, PAY_SOURCE_POINTER, IS_ACTIVE,
CREATE_DATE, PERIOD_NO
FROM dbo.PTC_CERT_PERIOD
WHERE PERIOD_NO IN
(SELECT PATIENT_ID MaxPtID,
MAX(PERIOD_NO) MaxCertPeriod
FROM dbo.PTC_CERT_PERIOD) Z
谢谢,但还是不行。我得到“Z附近的FROM子句出错。无法分析查询文本”试图添加AS,但没有go。试图添加第二组括号,但没有成功?