G'全天,
我试图将大量数据整合在一起,而且我遇到了障碍,无法解决问题。我的Google-fu让我失望。
我知道我想要20行作为输出,我知道这是因为软件中有20条独特的记录,所以我试图将它们转储到csv。
我已写下以下内容
SELECT
ml.MeasurementLocationlName
,mav.DateTime
,MIN(CASE WHEN mal.AttributeName = 'Comment' THEN mav.Value END) As Comment
,MIN(CASE WHEN mal.AttributeName = 'View' THEN mav.Value END) As [View]
,MIN(CASE WHEN mal.AttributeName = 'X' THEN mav.Value END) As X
,MIN(CASE WHEN mal.AttributeName = 'Y' THEN mav.Value END) As Y
,MIN(CASE WHEN mal.AttributeName = 'Z' THEN mav.Value END) As Z
,MIN(CASE WHEN mal.AttributeName = 'Azimuth' THEN mav.Value END) As Azimuth
,MIN(CASE WHEN mal.AttributeName = 'Workplace' THEN mav.Value END) As Workplace
,MIN(CASE WHEN mal.AttributeName = 'PersonelPresent' THEN mav.Value END) As PersonelPresent
,MIN(CASE WHEN mal.AttributeName = 'RespiratoryProtection' THEN mav.Value END) As RespiratoryProtection
,MIN(CASE WHEN mal.AttributeName = 'SiteStatus' THEN mav.Value END) As SiteStatus
,MIN(CASE WHEN mal.AttributeName = 'ReasonForReading' THEN mav.Value END) As ReasonForReading
,MIN(CASE WHEN mtl.MeasurementType = 'Gas_O2' THEN mtv.Value END) As Gas_O2
,MIN(CASE WHEN mtl.MeasurementType = 'Gas_NH3' THEN mtv.Value END) As Gas_NH3
,MIN(CASE WHEN mtl.MeasurementType = 'Gas_LEL' THEN mtv.Value END) As Gas_LEL
,MIN(CASE WHEN mtl.MeasurementType = 'Width' THEN mtv.Value END) As Width
,MIN(CASE WHEN mtl.MeasurementType = 'Height_2' THEN mtv.Value END) As Height_2
,MIN(CASE WHEN mtl.MeasurementType = 'Height_av' THEN mtv.Value END) As Height_av
,MIN(CASE WHEN mtl.MeasurementType = 'Height_3' THEN mtv.Value END) As Height_3
,MIN(CASE WHEN mtl.MeasurementType = 'Temp_WB' THEN mtv.Value END) As Temp_WB
,MIN(CASE WHEN mtl.MeasurementType = 'Temp_DB' THEN mtv.Value END) As Temp_DB
,MIN(CASE WHEN mtl.MeasurementType = 'Airflow' THEN mtv.Value END) As Airflow
,MIN(CASE WHEN mtl.MeasurementType = 'Radiation' THEN mtv.Value END) As Radiation
,MIN(CASE WHEN mtl.MeasurementType = 'Pressure' THEN mtv.Value END) As Pressure
,MIN(CASE WHEN mtl.MeasurementType = 'Counts' THEN mtv.Value END) As Counts
,MIN(CASE WHEN mtl.MeasurementType = 'ESP_Efficiency' THEN mtv.Value END) As ESP_Efficiency
,MIN(CASE WHEN mtl.MeasurementType = 'Area' THEN mtv.Value END) As Area
,MIN(CASE WHEN mtl.MeasurementType = 'Volume' THEN mtv.Value END) As Volume
,MIN(CASE WHEN mtl.MeasurementType = 'Height_1' THEN mtv.Value END) As Height_1
,MIN(CASE WHEN mtl.MeasurementType = 'Gas_CO' THEN mtv.Value END) As Gas_CO
,MIN(CASE WHEN mtl.MeasurementType = 'XArea' THEN mtv.Value END) As XArea
,MIN(CASE WHEN mtl.MeasurementType = 'Gas_NO2' THEN mtv.Value END) As Gas_NO2
FROM
dbo.VMS_MeasurementAttributes_Values mav
JOIN dbo.VMS_MeasurementAttributes_List mal ON
mav.MeasurementAttributeID=mal.MeasurementAttributeID
JOIN dbo.VMS_MeasurementLocations ml ON
mav.MeasurementLocationID=ml.MeasurementLocationID
JOIN dbo.VMS_MeasurementTypes_Values mtv ON
ml.MeasurementLocationID=mtv.MeasurementLocationID
JOIN dbo.VMS_MeasurementTypes_List mtl ON
mtv.MeasurementTypeID = mtl.MeasurementTypeID
WHERE ml.MeasurementLocationlName = 'MS-44019'
GROUP BY ml.MeasurementLocationlName, mav.DateTime
当我返回预期的20行时,但由于我已经获得了MIN
聚合,我只得到整个值的最小值
(对于' Airflow'我得到所有20行的0.3)
然后当我删除MIN
聚合并将mal.AttributeName
,mav.Value
,mtl.MeasurementType
和mtv.Value
添加到我的GROUP BY
条款中时,我得到了4859行,每行显示唯一值。
我的问题是,我需要做什么才能生成我知道需要的20个结果,还要为每个CASE
表达式提供唯一值(包括NULL' s)?
编辑: 我上面的当前查询给出了以下输出(为清晰起见,省略了一堆列) Current Query Output
如您所见,由于MIN
聚合,所有条目的气流均为0.3。
我想要得到的就是这个
Desired Query Output