【发布时间】:2014-03-18 01:37:11
【问题描述】:
我是 SQL SERVER 的初学者。我有这 2 个查询:
第一个查询:
SELECT 'OK' AS STATUS, COUNT(*) AS BIL
FROM
(SELECT D.DAJ_NODAFTAR
FROM BATM112_DES_AMJENTERA AS D
WHERE D.DAJ_KODKAT='VTC'
AND (SELECT TOP 1 DAJ_KLASIFIKASI FROM BATM112_RKDKLASIFIKASI WHERE
DAJ_NODAFTAR=D.DAJ_NODAFTAR ORDER BY DAJ_TKHDE DESC )='OK') D
第二次查询:
SELECT 'NOT OK' AS STATUS, COUNT(*) AS BIL
FROM
(SELECT D.DAJ_NODAFTAR
FROM BATM112_DES_AMJENTERA AS D
WHERE D.DAJ_KODKAT='VTC'
AND (SELECT TOP 1 DAJ_KLASIFIKASI FROM BATM112_RKDKLASIFIKASI WHERE
DAJ_NODAFTAR=D.DAJ_NODAFTAR ORDER BY DAJ_TKHDE DESC )='NOT OK') D
当我尝试运行这两个查询时,结果完美显示,但是当我尝试使用 UNION 组合这两个查询时,如下所示:
SELECT 'OK' AS STATUS, COUNT(*) AS BIL
FROM
(SELECT D.DAJ_NODAFTAR
FROM BATM112_DES_AMJENTERA AS D
WHERE D.DAJ_KODKAT='VTC'
AND (SELECT TOP 1 DAJ_KLASIFIKASI FROM BATM112_RKDKLASIFIKASI WHERE
DAJ_NODAFTAR=D.DAJ_NODAFTAR ORDER BY DAJ_TKHDE DESC )='OK') D
UNION
SELECT 'NOT OK' AS STATUS, COUNT(*) AS BIL
FROM
(SELECT D.DAJ_NODAFTAR
FROM BATM112_DES_AMJENTERA AS D
WHERE D.DAJ_KODKAT='VTC'
AND (SELECT TOP 1 DAJ_KLASIFIKASI FROM BATM112_RKDKLASIFIKASI WHERE
DAJ_NODAFTAR=D.DAJ_NODAFTAR ORDER BY DAJ_TKHDE DESC )='NOT OK') D
出现此错误消息:
消息 104,第 15 级,状态 1,第 1 行
如果语句包含 UNION 运算符,则 ORDER BY 项必须出现在选择列表中。
谁能告诉我如何解决这个错误?
【问题讨论】:
-
你能在 UNION 之后发布完整的查询吗?
-
好的。我已经在联合后发布了完整的查询。检查我上面的问题。
标签: sql sql-server sql-server-2000