首页 > 解决方案 > 隐蔽 Oracle 查询到 Sql Server 查询

问题描述

我正在尝试在 SSMS 中运行此查询,问题是我返回了列 creation_date、transaction_type 和 RecordType,这很好,但是当我在选择查询计数(column_1)中运行时,我收到以下错误

列 'table_1.CREATION_DATE' 在选择列表中无效,因为它既不包含在聚合函数中,也不包含在 GROUP BY 子句中。

DECLARE   @creation_date date
        , @transaction_type varchar
        , @record_type int
        , @column_1 varchar

select count(column_1) AS Volume
       ,JudgmentMonth=RIGHT(REPLACE(CONVERT(VARCHAR(7), creation_date, 103), '/', ''), 7)
       ,transaction_type, 
       REPLACE(record_type, 3, 2) as RecordType  
from   table_1 
where  transaction_type = 'PG' 
and    column_1 = 'CCJ' 

关于我做错了什么的任何想法,我是 sql server 的新手并试图转换这个 oracle 查询?

非常感谢

标签: sqlsql-serveroracletsql

解决方案


Count 是一个聚合函数,因此您需要按其他所有内容进行分组:

DECLARE @creation_date DATE
      , @transaction_type VARCHAR
      , @record_type INT
      , @column_1 VARCHAR;

SELECT COUNT(column_1) AS Volume
     , RIGHT(REPLACE(CONVERT(VARCHAR(7), creation_date, 103), '/', ''), 7) AS JudgmentMonth
     , transaction_type
     , REPLACE(record_type, 3, 2) AS RecordType
FROM table_1
WHERE transaction_type = 'PG'
      AND column_1 = 'CCJ'
GROUP BY RIGHT(REPLACE(CONVERT(VARCHAR(7), creation_date, 103), '/', ''), 7)
       , transaction_type
       , REPLACE(record_type, 3, 2);

推荐阅读