sql - 我得到的错误是'Msg 8120,'Vendors.VendorName' 在选择列表中无效'
问题描述
select
VendorID,
VendorName,
VendorCity,
VendorState,
VendorPhone,
concat(VendorContactFName, ' ',VendorContactFName) AS VendorContactFullName,
max(InvoiceDueDate)
from
Vendors v
inner join
InvoiceArchive IVA on v.VendorID = IVA.VendorID
where
VendorCity in ('California', 'Arizona', 'Nevada');
解决方案
您似乎正在寻找一个聚合查询。这意味着您需要在group by
子句中列出所有非聚合列。那看起来像:
select
v.VendorID,
v.VendorName,
v.VendorCity,
v.VendorState,
v.VendorPhone,
concat(v.VendorContactFName, ' ', v.VendorContactFName) AS VendorContactFullName,
max(iv.InvoiceDueDate)
from Vendors v
inner join InvoiceArchive IVA on v.VendorID = IVA.VendorID
where v.VendorCity in ('California','Arizona','Nevada')
group by
v.VendorID,
v.VendorName,
v.VendorCity,
v.VendorState,
v.VendorPhone,
v.VendorContactFName,
v.VendorContactFName
请注意,在此查询中,所有列名都使用它们所属的表进行限定。
您可以使用 获得相同的结果cross apply
,这不需要聚合:
select
v.VendorID,
v.VendorName,
v.VendorCity,
v.VendorState,
v.VendorPhone,
concat(v.VendorContactFName, ' ', v.VendorContactFName) AS VendorContactFullName,
iv.MaxInvoiceDueDate
from Vendors v
cross apply (
select max(iva.InvoiceDueDate) MaxInvoiceDueDate
from InvoiceArchive iva
where iva.VendorID = v.VendorID
) iva
推荐阅读
- symfony5 - 莱克西克智威汤逊。使用其他字段而不是用户名和密码
- typescript - webpack sass-loader 不使用 tsconfig 路径
- voice-recording - 通话录音是否在 android 版本 9(pie) [Android studio] 中工作?
- azure-active-directory - 在 Azure 中的多个 AVD 组中查找用户
- firebase - 如何将屏幕截图从“react-native-view-shot”上传到 React Native 中的 Firebase 存储
- r - Loop in R through columns and find the first value equal 1
- sql - 由于表中使用的行数太大导致查询超时
- sql - 在 PIVOT 语句 (GBQ) 中动态设置 IN 条件(带整数)
- mysql - sql查询以获取等于和不等于条件的记录
- python - Visual Studio Code 和 Python 3.9 集成