如何获取多个选择的结果并合并为一行

Bra*_*rad 6 sql t-sql sql-server pivot

我有一个表格,其中包含4个发电机的信息,我想在一行中得到四个查询的结果.有没有人有任何建议.谢谢

SELECT  avg(KW) as GEN_101_AVG
FROM         genset WHERE     (GenSetName   like 'GEA3519') and GenDate >= '1 jan   2003    00:00:00' and GenDate < '1 feb 2003 00:00:00'

   SELECT  avg(KW) as GEN_201_AVG
FROM         genset WHERE     (GenSetName   like 'GEA3520') and GenDate >= '1 jan 2003 00:00:00' and GenDate < '1 feb 2003 00:00:00'

SELECT  avg(KW) as GEN_301_AVG
FROM         genset WHERE     (GenSetName   like 'GEA3521') and GenDate >= '1 jan 2003 00:00:00' and GenDate < '1 feb 2003 00:00:00'

SELECT  avg(KW) as GEN_401_AVG
FROM         genset WHERE     (GenSetName   like 'GEA3522') and GenDate >= '1 jan 2003 00:00:00' and GenDate < '1 feb 2003 00:00:00'
Run Code Online (Sandbox Code Playgroud)

MS-SQL

Qua*_*noi 21

SELECT  (
        SELECT  avg(KW)
        FROM    genset
        WHERE   (GenSetName   like 'GEA3519')
                and GenDate >= '1 jan   2003    00:00:00'
                and GenDate < '1 feb 2003 00:00:00'
        ) AS avg_GEA3519,
        (
        SELECT  avg(KW)
        FROM    genset
        WHERE   (GenSetName   like 'GEA3520')
                and GenDate >= '1 jan   2003    00:00:00'
                and GenDate < '1 feb 2003 00:00:00'
        ) AS avg_GEA3520,
        (
        SELECT  avg(KW)
        FROM    genset
        WHERE   (GenSetName   like 'GEA3521')
                and GenDate >= '1 jan   2003    00:00:00'
                and GenDate < '1 feb 2003 00:00:00'
        ) AS avg_GEA3521,
        (
        SELECT  avg(KW)
        FROM    genset
        WHERE   (GenSetName   like 'GEA3522')
                and GenDate >= '1 jan   2003    00:00:00'
                and GenDate < '1 feb 2003 00:00:00'
        ) AS avg_GEA3522
Run Code Online (Sandbox Code Playgroud)

或者在SQL Server 2005+,这个:

SELECT  [GEA3519], [GEA3520], [GEA3521], [GEA3522]
FROM    (
        SELECT  GenSetName, KW
        FROM    genset
        WHERE   GenDate >= '1 Jan 2003  00:00:00'
                AND GenDate < '1 Feb 2003 00:00:00'
        ) AS q
PIVOT
(
        AVG(KW)
        FOR  GenSetName IN (['GEA3519'], ['GEA3520'], ['GEA3521'], ['GEA3522']
)
Run Code Online (Sandbox Code Playgroud)