Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server max(columnname)给出错误的输出_Sql Server_Sql Server 2008 - Fatal编程技术网

Sql server max(columnname)给出错误的输出

Sql server max(columnname)给出错误的输出,sql-server,sql-server-2008,Sql Server,Sql Server 2008,简单的select max函数给出错误的值。当我运行下面的查询时,我得到的最大值为100,其中列中的最大值为11。我还有一个问题,当我运行这个查询时,我得到了更令人担忧的结果——所有列值都出错了。我做错了什么 从报告中选择最大值(转换([PT_100SCALED_VAL0]为十进制值)) SELECT t7.[timestamp], t7.[timestamp_utc], t7.[PT_100SCALED_VAL0], t7.[PT_101SCALED_VAL0], t7.[PT_102SCA

简单的select max函数给出错误的值。当我运行下面的查询时,我得到的最大值为100,其中列中的最大值为11。我还有一个问题,当我运行这个查询时,我得到了更令人担忧的结果——所有列值都出错了。我做错了什么

从报告中选择最大值(转换([PT_100SCALED_VAL0]为十进制值))

SELECT t7.[timestamp], t7.[timestamp_utc], t7.[PT_100SCALED_VAL0], t7.[PT_101SCALED_VAL0],
 t7.[PT_102SCALED_VAL0], t7.[PT_103SCALED_VAL0], t7.[PT_104SCALED_VAL0], t7.[PT_105SCALED_VAL0],
  t7.[PT_200SCALED_VAL0], t7.[PT_201SCALED_VAL0], t7.[PT_300SCALED_VAL0] ,
   ( SELECT MAX([PT_100SCALED_VAL0]) FROM REPORT ) AS
    PT_100SCALED_VAL0_MAXIMUM FROM [REPORT] t7 
    Where  t7. [PT_100SCALED_VAL0]=100 
    group by t7.[timestamp],t7.[timestamp_utc],t7.[PT_100SCALED_VAL0],t7.[PT_101SCALED_VAL0],t7.[PT_102SCALED_VAL0],t7.[PT_103SCALED_VAL0],t7.[PT_104SCALED_VAL0],t7.[PT_105SCALED_VAL0],t7.[PT_200SCALED_VAL0],t7.[PT_201SCALED_VAL0],t7.[PT_300SCALED_VAL0]
下面是我的表格设计查询

USE [master]
GO

/****** Object:  Table [dbo].[REPORT]    Script Date: 03/24/2016 16:24:29 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[REPORT](
    [timestamp] [datetime] NULL,
    [timestamp_utc] [datetime] NOT NULL,
    [PT_100SCALED_VAL0] [float] NULL,
    [PT_101SCALED_VAL0] [float] NULL,
    [PT_102SCALED_VAL0] [float] NULL,
    [PT_103SCALED_VAL0] [float] NULL,
    [PT_104SCALED_VAL0] [float] NULL,
    [PT_105SCALED_VAL0] [float] NULL,
    [PT_200SCALED_VAL0] [float] NULL,
    [PT_201SCALED_VAL0] [float] NULL,
    [PT_300SCALED_VAL0] [float] NULL,
 CONSTRAINT [PK_REPORT] PRIMARY KEY CLUSTERED 
(
    [timestamp_utc] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

GO
以下是我的表格数据:

timestamp   timestamp_utc   PT_100SCALED_VAL0   PT_101SCALED_VAL0   PT_102SCALED_VAL0   PT_103SCALED_VAL0   PT_104SCALED_VAL0   PT_105SCALED_VAL0   PT_200SCALED_VAL0   PT_201SCALED_VAL0   PT_300SCALED_VAL0
2016-01-08 16:02:50.780 2016-01-08 10:32:50.780 11  22  33  44  55  66  0   0   0
2016-01-08 16:04:42.333 2016-01-08 10:34:42.333 11  22  33  44  55  66  0   0   0
如果希望
max()
符合
where
条件,请使用窗口函数而不是子查询:

SELECT . . .
       MAX([PT_100SCALED_VAL0]) OVER () as PT_100SCALED_VAL0_MAXIMUM

但是我得到的是100而不是11。请提供一些样本数据进行测试,然后你可以帮助我,我做错了什么。列数据类型为float是否导致问题从下一次查询中得到的数字:
从[dbo].[REPORT]
中选择最大值(PT_100SCALED_VAL0)?如果与11不同,则您的示例数据不正确。通过运行您提到的查询,我得到的最大值为100,这是不正确的。我的数据有一些空值,并且为我的pt_100scaled_val0列重复了11次。您可能有多个架构中的报表表,可能有多个数据库混合在一起(为什么您的
创建表
脚本绑定到
主数据库?),甚至可能有数据库损坏(不太可能)。Simple
max()
无法创建不存在的值。运行
从[dbo].[REPORT]中选择PT_100SCALED_VAL0,按PT_100SCALED_VAL0 desc
-您看到了哪些值?您是从这里复制粘贴我的查询还是自己键入的?那么,关于您最初的查询,为什么在t7之后有空间<代码>t7。[PT_100; u VAL0]