• SqlServer数据库查询不同字段-年龄段分析


    在这里,我想得到一组数据,但是又不能直接得到,很头疼,细节如下: 一张表,存储有用户的一些基本信息,比如,出生年月,报名日期,应收金额,实收金额等; 另一张表,存储有不同年龄段的一些信息,比如腾讯Q的找人功能,根据用户筛选条件不同,来找不同的年龄段的数据。 问题就在于,这些数据是直接得不到的。

    分享如下:

    SELECT datediff(year,fdtmborndate,fdtmdate) AS fintAge,flotShouldAmount,flotSumAmount,CAST('' AS VARCHAR) AS fchrAgeScopeID INTO #t FROM vw_Dfss_Registration WHERE 1=1 AND 9=9

    第一步:根据vw_Dfss_Registration视图得到这里可以得到的一些基本信息,如,计算出来的年龄,应收金额,实收金额,并给他一个字段位置。存储到一张临时表里面。下面的where条件是具体项目中的特殊含义,不必理会。

    UPDATE #t SET fchrAgeScopeID=s.fchrAgeScopeID FROM dbo.AgeScope s WHERE #t.fintAge BETWEEN s.fintAgeS AND s.fintAgeE AND fintScopeType=1

    第二步:在存储年龄段的表里面让每个用户自己对号入座,找到自己属于哪个年龄段了人,那么更新临时表中的年龄信息,更新的依据条件是前面的ID。这样我就把不同人他到底属于哪个年龄段了,给弄到临时表里面了。

    SELECT s.fchrDesc,COUNT(*) AS fintCount,SUM(flotShouldAmount) AS flotShouldAmount ,SUM(flotSumAmount) AS flotSumAmount,ROUND( SUM(flotSumAmount)/COUNT(*),0) AS flotPerAvg ,convert(varchar,round(cast(COUNT(*)as float)/cast((SELECT count(*) FROM #t)as float),4)*100)+'%' percentage FROM #t INNER JOIN dbo.AgeScope s ON #t.fchrAgeScopeID = s.fchrAgeScopeID GROUP BY #t.fchrAgeScopeID,s.fchrDesc ORDER BY fchrDesc ASC

    第三步:不用多解释了,根据需求显示需要的字段信息。

    DROP TABLE #t

    最后,释放临时表。

  • 相关阅读:
    [转]sql getdate() 时间格式设置
    [Prism练习] Prism下MVVM中命令绑定的CanExecute问题
    [Prism练习] Prism Modularity 配合 Unity Ioc 用 XML 方式
    Java课程设计
    WinForm指定ListView某项的字体和前景色。
    [Python学习第一天]内置数据类型介绍,万物皆对象!
    设置Swing使用系统风格的组件
    Tomcat Valve:AccessLogValve
    【转】HttpClient关闭连接
    学习Tomcat的相关资料
  • 原文地址:https://www.cnblogs.com/duanshunjie/p/3293569.html
Copyright © 2020-2023  润新知