Sql 列在ORDER BY子句中无效,因为它未包含在聚合函数或GROUP BY子句中

Sql 列在ORDER BY子句中无效,因为它未包含在聚合函数或GROUP BY子句中,sql,join,view,Sql,Join,View,好的,这是我对大众汽车的看法 SELECT dbo.tbl_equip_swl_unit.unit_id, dbo.tbl_equip_swl_unit.unit_name, dbo.tbl_equip_swl_unit.archived, dbo.tbl_categories.category_id, dbo.tbl_categories.categoryName, dbo.tbl_categories.pare

好的,这是我对大众汽车的看法

SELECT  dbo.tbl_equip_swl_unit.unit_id,
        dbo.tbl_equip_swl_unit.unit_name,
        dbo.tbl_equip_swl_unit.archived,
        dbo.tbl_categories.category_id,
        dbo.tbl_categories.categoryName,
        dbo.tbl_categories.parentCategory,
        dbo.tbl_categories.sub_category,
        dbo.tbl_categories.desc_category,
        dbo.tbl_categories.description,
        dbo.tbl_categories.miscellaneous,
        dbo.tbl_categories.category_archived,
        dbo.tbl_equip_swl_unit.unit_name AS Expr1,
        dbo.tbl_categories.categoryName AS Expr2,
        dbo.tbl_categories.description AS Expr3,
        dbo.tbl_equip_depts.dept_name,
        dbo.tbl_equip_man.man_name,
        dbo.tbl_Lifting_Gear.e_defects AS Expr7,
        dbo.tbl_Lifting_Gear.e_defects_desc AS Expr8,
        dbo.tbl_Lifting_Gear.e_defects_date AS Expr9,
        dbo.tbl_equipment.equipment_id,
        dbo.tbl_equipment.e_contract_no,
        dbo.tbl_equipment.slID,
        dbo.tbl_equipment.e_entered_by,
        dbo.tbl_equipment.e_serial,
        dbo.tbl_equipment.e_model,
        dbo.tbl_equipment.e_description,
        dbo.tbl_equipment.e_location_id,
        dbo.tbl_equipment.e_owner_id,
        dbo.tbl_equipment.e_department_id,
        dbo.tbl_equipment.e_manafacture_id,
        dbo.tbl_equipment.e_manDate1,
        dbo.tbl_equipment.e_manDate2,
        dbo.tbl_equipment.e_manDate3,
        dbo.tbl_equipment.e_dimensions,
        dbo.tbl_equipment.e_test_no,
        dbo.tbl_equipment.e_firstDate1,
        dbo.tbl_equipment.e_firstDate2,
        dbo.tbl_equipment.e_firstDate3,
        dbo.tbl_equipment.e_prevDate1,
        dbo.tbl_equipment.e_prevDate2,
        dbo.tbl_equipment.e_prevDate3,
        dbo.tbl_equipment.e_insp_frequency,
        dbo.tbl_equipment.e_swl,
        dbo.tbl_equipment.e_swl_unit_id,
        dbo.tbl_equipment.e_swl_notes,
        dbo.tbl_equipment.e_cat_id,
        dbo.tbl_equipment.e_sub_id,
        dbo.tbl_equipment.e_parent_id,
        dbo.tbl_equipment.e_last_inspector,
        dbo.tbl_equipment.e_last_company,
        dbo.tbl_equipment.e_deleted AS Expr11,
        dbo.tbl_equipment.e_deleted_desc AS Expr12,
        dbo.tbl_equipment.e_deleted_date AS Expr13,
        dbo.tbl_equipment.e_deleted_insp AS Expr14,
        dbo.tbl_Lifting_Gear.e_defects_action AS Expr15,
        dbo.tbl_equipment.e_rig_location,
        dbo.tbl_Lifting_Gear.e_add_type AS Expr17,
        dbo.tbl_Lifting_Gear.con_id,
        dbo.tbl_Lifting_Gear.lifting_date,
        dbo.tbl_Lifting_Gear.lifting_ref_no,
        dbo.tbl_Lifting_Gear.e_id,
        dbo.tbl_Lifting_Gear.inspector_id,
        dbo.tbl_Lifting_Gear.lift_testCert,
        dbo.tbl_Lifting_Gear.lift_rig_location,
        dbo.tbl_Lifting_Gear.inspected,
        dbo.tbl_Lifting_Gear.lifting_through,
        dbo.tbl_Lifting_Gear.liftingNDT,
        dbo.tbl_Lifting_Gear.liftingTest,
        dbo.tbl_Lifting_Gear.e_defects,
        dbo.tbl_Lifting_Gear.e_defects_desc,
        dbo.tbl_Lifting_Gear.e_defects_date,
        dbo.tbl_Lifting_Gear.e_defects_action,
        dbo.tbl_Lifting_Gear.lift_department_id,
        dbo.tbl_Lifting_Gear.lifting_loc
FROM    dbo.tbl_equipment
        INNER JOIN dbo.tbl_equip_swl_unit
                ON dbo.tbl_equipment.e_swl_unit_id = dbo.tbl_equip_swl_unit.unit_id
        INNER JOIN dbo.tbl_categories
                ON dbo.tbl_equipment.e_cat_id = dbo.tbl_categories.category_id
        INNER JOIN dbo.tbl_equip_depts
                ON dbo.tbl_equipment.e_department_id = dbo.tbl_equip_depts.dept_id
        INNER JOIN dbo.tbl_equip_man
                ON dbo.tbl_equipment.e_manafacture_id = dbo.tbl_equip_man.man_id
        INNER JOIN dbo.vwSubCategory
                ON dbo.tbl_equipment.e_sub_id = dbo.vwSubCategory.category_id
        INNER JOIN dbo.vwDescCategory
                ON dbo.tbl_equipment.e_cat_id = dbo.vwDescCategory.category_id
        INNER JOIN dbo.tbl_Lifting_Gear
                ON dbo.tbl_equipment.equipment_id = dbo.tbl_Lifting_Gear.e_id
下面是我正在使用的带有子查询的select语句:

SELECT  *
FROM    vw_LiftEquip
WHERE   lifting_loc = ? AND 
        con_id = ? AND 
        EXPR11 = 
        'N'(
                SELECT MAX(lifting_date) AS maxLift
                FROM vw_LiftEquip
                WHERE e_id = equipment_id
            )
ORDER BY    lifting_ref_no,
            category_id,
            e_swl,
            e_serial
我得到一个错误: 列vw_LiftEquip.category_id在ORDER BY子句中无效,因为它未包含在聚合函数或GROUP BY子句中

我不明白它为什么会返回那个错误,这是我第一次在如此复杂的视图上运行子查询,我有点不知所措,提前感谢您的帮助。我已经浏览了类似的帖子,但找不到这篇文章的答案,如果我只是装傻的话,很抱歉。

你不见了,在EXPR11='N'和选择MAX之间

否则,它看起来没问题。如果列表中没有其他列,请选择

更新:@hvd还注意到,您没有任何东西可以与maxu-date进行比较。见评论

更新2

SELECT  *
FROM    vw_LiftEquip v1
        CROSS JOIN
        (
             SELECT MAX(lifting_date) AS maxLift
             FROM vw_LiftEquip
             WHERE e_id = equipment_id
        ) v2
WHERE   v1.lifting_loc = ? AND 
        v1.con_id = ? AND 
        v1.EXPR11 = 'N'
ORDER BY    v1.lifting_ref_no,
            v1.category_id,
            v1.e_swl,
            v1.e_serial

它还缺少比较MaxLiving_date的内容,因此它应该类似于EXPR11='N'和Living_date=…添加并在建议的位置将错误更改为:在预期条件的上下文中指定的非布尔类型的表达式,接近'ORDER'。我认为我没有比较它,这违反了子查询规则,我只是希望它将maxLift定义为与设备项相对应的newwest lifting_日期_id@DuncanCook:是否要将其包含在“选择”列表中?是否按订单?请选择,我不关心订单,我想使用maxLift作为结束文档中相同记录集的一部分all@DuncanCook:完成。我使用交叉连接,因为只有一行来自vw_LiftEquip