为什么我的 CROSS APPLY 列没有显示?

问题描述

我想我可能问错了问题,但它就是这样。我有一个相当复杂的查询,我知道我需要做一些 CROSS APPLYs 才能使它工作,但是当我创建我的初始查询运行良好,然后在最后添加一个 CROSS APPLY 时,我的 CROSS APPLY 中的指定列不t 在我执行查询时出现。有点奇怪。我确定我的语法有问题,但我不知道它是什么。

这是我的查询的简化版本:

/* I have some ctes */
WITH cte AS (SELECT * FROM A WHERE A.id > 50)

/* normal query */
SELECT b1,b2,b3 
FROM B
INNER JOIN cte ON b.b1 = cte.b1
INNER JOIN X on b.x1 = X.x1

/* Cross Apply,this is my real code */
CROSS APPLY (
    SELECT TOP 1 (Family.GroupID) AS "Family"
    FROM (
        SELECT HIFIS_Clients.ClientID,HIFIS_Groups.GroupID,HIFIS_People_Groups.GroupHeadYN,HIFIS_People_Groups.DateStart,ISNULL(HIFIS_People_Groups.DateEnd,CURRENT_TIMESTAMP) AS "DateEnd"

        FROM HIFIS_Clients
            INNER JOIN HIFIS_People ON HIFIS_Clients.PersonID = HIFIS_People.PersonID
            INNER JOIN HIFIS_People_Groups ON HIFIS_People.PersonID = HIFIS_People_Groups.PersonID
            INNER JOIN HIFIS_Groups ON HIFIS_People_Groups.GroupID = HIFIS_Groups.GroupID

        WHERE HIFIS_Groups.GroupTypeID = 1

        ) Family
    WHERE Family.ClientID = B.ClientID
    ORDER BY Family.GroupID
) Family

我是否不允许在与 CROSS APPLY 相同的查询中使用 JOINS?使用 ctes 有什么问题吗?我的查询在没有 CROSS APPLY 的情况下运行良好。 CROSS APPLY 中的 SELECT 语句本身运行良好。我没有收到语法错误...

在这个假设示例中的输出

b1 b2 b3
17 2 40

所以没有“家庭”栏。为什么不见了?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...