Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.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
.net 如何从SQL Server数据库检索输入最多的值?_.net_Sql_Vb.net_Ado.net - Fatal编程技术网

.net 如何从SQL Server数据库检索输入最多的值?

.net 如何从SQL Server数据库检索输入最多的值?,.net,sql,vb.net,ado.net,.net,Sql,Vb.net,Ado.net,如果我有mssql数据库,记录显示如下: Id Serv-code Value 1 100 3 2 100 4 3 100 3 4 100 3 5 101 5 6 101

如果我有mssql数据库,记录显示如下:

Id           Serv-code          Value
1            100                3
2            100                4
3            100                3
4            100                3
5            101                5
6            101                5

当我使用serv_code 100搜索记录时所需的逻辑,则输出将是平均值,意味着3将显示在文本框中,因为输入的值3将是4的3倍,如上所示。。。。如果我使用服务代码100搜索记录,并且如果服务代码的值等于3和4,则仅表示最近输入的值将显示在文本框中。

您的问题令人困惑。但要用平均值回答该部分: 您应该在数据库端这样做:

CREATE TABLE #Temp (
Id              int,
ServCode        INT,
Value           INT)

INSERT INTO #Temp Values(1,100,3)
INSERT INTO #Temp Values(2,100,4)
INSERT INTO #Temp Values(3,100,3)
INSERT INTO #Temp Values(4,100,3)
INSERT INTO #Temp Values(5,101,5)
INSERT INTO #Temp Values(6,101,5)

select AVG(Value)FROM #Temp WHERE ServCode=100

drop table #Temp
使用此选项在查询中创建一个额外的列,其中包含每行服务代码的平均值:

 SELECT  T1.*,
    (SELECT AVG(Value)
        FROM [#Temp] AS T2
    WHERE T1.ServCode=T2.ServCode) AS average
 FROM [#Temp] AS T1

因为您需要serv code=100(3)的所有记录的平均值。在sql server中创建一个用户定义的函数,该函数将Serv代码作为参数并返回平均值。然后,您可以将旧值与用户想要设置的新值或其他任何值进行比较。我可以使用select查询直接使用平均值函数吗?在数据库中使用哪种数据类型来使用平均值?编辑我的答案以向您展示如何添加额外的平均值列。什么是t1和t2我只有一个表!!
with occurrences as (select value, occurrences, rank() over(order by occurrences desc) as rank
                     from (select value, count(*) as occurrences
                           from @data where serv_code = 101 group by value
                          ) count_occurrences
                     )
select case when (select count(*) from occurrences where rank = 1) > 1
            then (select top 1 data.value from @data data join occurrences on data.value = occurrences.value where data.serv_code = 101 and occurrences.rank = 1 order by id desc)
       else (select value from occurrences where rank = 1)
       end as value;