将SQL中的数据与列中的数据合并

时间:2019-03-04 14:29:26

标签: sql sql-server

我有包含数据的临时表

int get_disp_num_from_widget(Widget w) {
    Screen* xs = w->core.screen; //Xlib screen
    if (xs) {
        Display* xd = w->core.screen->display; //Xlib display
        if (xd) {
            XmDisplay d = XmGetXmDisplay(xd); // causes "Couldn't find per display information"
            if (d) {
                char* string = d->display.bindingsString;
                if (string) {
                    printf("Display binding string: %s", string);
                }
            }
        }
    }
    return -1;
}

请查找快照

我需要合并Microsoft Windows 7企业版和Microsoft Windows 7企业版 你能告诉我怎么做吗

enter image description here

主要查询来自SCCM表数据的位置

    count1  serverinfo  csdversion  extend  servicepackdate piecolor
26  Microsoft Windows 8.1 Entreprise        NULL    2023-07-11  green
1   Microsoft® Windows Vista™ Enterprise        NULL    2010-04-13  black
2   Microsoft® Windows Vista™ Entreprise        NULL    2010-04-13  black
31698   Microsoft Windows 7 Enterprise  Service Pack 1  NULL    2020-04-13  green
9918    Microsoft Windows 7 Entreprise  Service Pack 1  NULL    2020-04-13  green

sccm表中的数据是错误的,因此要纠正这一点,我们必须将企业和企业视为相同

datesinfo表中的数据

    declare @variable varchar
create table #temptable(count1 int,serverinfo varchar(max),csdversion varchar(max),extend date,servicepackdate date,piecolor varchar(max))
insert into #temptable(count1,serverinfo,csdversion,extend,servicepackdate,piecolor)
select count(distinct OS.resourceid) as ModelCount,serverinfo,dt.Servicepack,dt.extendedsupportEnddate,dt.servicepacksupportenddate,
case
when DATEDIFF(month,getdate(), dt.servicepacksupportenddate) < 0 then 'black'
when DATEDIFF(month,getdate(),dt.servicepacksupportenddate) > 0 and DATEDIFF(month, getdate(),dt.servicepacksupportenddate) < 6  then 'red'
when DATEDIFF(month,getdate(),dt.servicepacksupportenddate) > 6 and DATEDIFF(month, getdate(),dt.servicepacksupportenddate) < 12  then 'orange'
when DATEDIFF(month,getdate(),dt.servicepacksupportenddate) > 12  then 'green'
ELSE ''
End As PieColor 
 from [dbo].[v_GS_OPERATING_SYSTEM] OS
inner join datesinfo dt on  os.caption0=dt.serverinfo where os.caption0 not like '%Server%' and  os.caption0 not like '%Windows 10%'
group by dt.Servicepack,serverinfo,dt.servicepacksupportenddate,dt.extendedsupportenddate



select * from #temptable

2 个答案:

答案 0 :(得分:0)

进行查询,然后cobyla。在其余各列中使用聚合函数:例如,您希望对所有count1求和的sum(count1),如果确定所有cdsversions都相同,则使用max(csdversion)。

答案 1 :(得分:0)

尝试进行GROUP BY查询,获取计数总和,然后按所有其他列进行汇总:

SELECT
    SUM(count1) AS count1,
    serverinfo,
    csdversion,
    extend,
    servicepackdate,
    piecolor
FROM #temp_table
GROUP BY
    serverinfo,
    csdversion,
    extend,
    servicepackdate,
    piecolor;