我有4个表(牛,农场,疫苗,vReminder ),我想从疫苗提示表中选择所有提醒显示为
(2(牛)在此日期有(疫苗名称1) from (农场名称1) (3(马)在此日期有(疫苗名称1) from (农场名称1) )(1(牛)在此日期有(疫苗名称5) from (农场名称2),依此类推)
我写了这个查询,但如果牛属于相同的类型,它不会将位于同一农场的相同的疫苗类型分组:

我的问题是:
SELECT
(Select v.vName from vaccine as v where v.vID= vr.[vID]),
vr.[Type],
vsD,
COUNT(vr.[Type]),
f.farmName
FROM [QNFARM].[dbo].[vReminder] as vr inner join
[cattle] as c on c.RFID = vr.RFID inner join
farm as f on f.farmID = c.fID
Group by
vr.vID,
vr.Type,
vsD,
vr.RFID,
f.farmName但正如你在屏幕截图中看到的,它是Vname红眼,用于相同的品种,相同的日期和相同的农场,它没有对它们进行分组。
发布于 2016-07-10 02:26:57
我也是通过牛的RFID进行分组的问题,这阻止了组功能收集相同的疫苗id,所以正确的查询是:
SELECT f.farmName,vr.[Type],
(Select v.vName from vaccine as v where v.vID= vr.[vID]) as vName,vr.vsD
,COUNT(*) as Num
FROM [QNFARM].[dbo].[vReminder] as vr inner join [cattle] as c on c.RFID=vr.RFID inner join farm as f on f.farmID=c.fID Group by f.farmName,vr.Type,vr.vID,vr.vsD现在,我从group by语句和结果中删除了RFID

发布于 2016-07-10 02:44:57
不要使用子查询来获取疫苗名称。只需使用joins:
SELECT v.vName, vr.[Type], vsD, COUNT(*), f.farmName
FROM [QNFARM].[dbo].[vReminder] vr INNER JOIN
[cattle] c
ON c.RFID = vr.RFID INNER JOIN
farm f
ON f.farmID = c.fID INNER JOIN
vaccine v
ON v.vid = vr.vid
GROUP BY v.vname, vr.Type, vsD, f.farmName;https://stackoverflow.com/questions/38284718
复制相似问题