大家。
我的SQL查询大大困扰了我。基本上,查询被用于生成关于产品在几英亩土地上的使用情况的报告,我特别有两个问题。我想说我花了一些时间试图找到在线报告相同问题的例子或其他人,但对我来说最困难的部分是试图将问题写成文字......
首先,查询:
SELECT [GWPA].[FIELD #]
,[GWPA].Variety
,[GWPA].ProductID
,[GWPA].[Product Name]
,[GWPA].AppDate
,[GWPA].AppTime
,[GWPA].OperatorID
,[GWPA].[Units Applied]
,[GWPA].[Unit Type]
,[GWPA].Acres
,[GWPA].CropYear
,[GWPA].[Unit Price]
--,SUM([HVFL].[Gross Weights])/100 AS GrossAsYieldPerField
,IIF([Load Type]='Gross Field',Sum([Gross Weights])/100,0) AS TotalAs
,IIF([Load Type]='B-Size',Sum([Gross Weights])/100,0) AS TotalBs
,(
SELECT SUM([HVHV].Acres)
FROM [PDOX].[harvest].[HARVEST] AS [HVHV]
WHERE [HVHV].CYear = '2015'
)
AS TotalAcres
FROM [PDOX].[harvest].[FLDLOAD] [HVFL]
INNER JOIN PDOX.growing.PESTAPPL AS [GWPA] ON [HVFL].[Field #] = [GWPA].[Field #]
WHERE [HVFL].CYear = '2015'
GROUP BY [GWPA].[FIELD #]
,[GWPA].Variety
,[GWPA].ProductID
,[GWPA].[Product Name]
,[GWPA].AppDate
,[GWPA].AppTime
,[GWPA].OperatorID
,[GWPA].[Units Applied]
,[GWPA].[Unit Type]
,[GWPA].Acres
,[GWPA].CropYear
,[GWPA].[Unit Price]
,[Load Type]
结果样本如下所示:
FIELD#|品种| ProductID |产品名称| AppDate | OperatorID |应用单位|单位类型|英亩| CropYear |单价| TotalAs | TotalBs | TotalAcres
C-03 | 2137S | VINE-01-104 |藤蔓延伸器| 7/25/2013 12:00:00 AM | Reabe | 42.5 | GAL。 | 85 | 2013 | 9.54 | 48730 | 0 |的 7368
C-05 | 1833S | 0000-00-100 |喷涂飞机| 6/9/1999 12:00:00 AM | Reabe | 62 | ACRE | 62 | 1999年| 4.05 | 0 | 60 |的 7368
C-05 | 1833S | 0000-00-100 |喷涂飞机| 6/9/1999 12:00:00 AM | Reabe | 62 | ACRE | 62 | 1999年| 4.05 | 36141 | 0 |的 7368
我为不那么出色的格式表示道歉,但我在其中加入了重要的部分,希望有所帮助。
如果有人能就这两个问题向我提供任何见解,我将不胜感激。我会在我的最后调查这个问题并发布我的发现,如果我在别人做之前想出来的话。
非常感谢您的时间:)
答案 0 :(得分:0)
问题是你没有使用IIF
作为agregate,这也迫使你按[Load Type]
分组 - 这显然是你真正想要的。
解决方案实际上非常简单 - 您仍然可以在聚合函数中使用case
,因此您可以从组中删除[Load Type]
,并使用类似的东西来获取总和:
sum(case when [LoadType] = 'Gross Field' then [Gross Weights] else 0 end) / 100 as TotalAs,
sum(case when [LoadType] = 'B-Size' then [Gross Weights] else 0 end) / 100 as TotalBs,