Tenho a seguinte consulta onde pesquiso em 2 tabelas o preço do item
select productSerial, productName
coalesce(
(select top 1 price
from productPrice pp
where pp.id = wi.id
order by pp.date),
(select top 1 price
from productPriceEast ppe
where ppe.id = wi.id
order by ppe.date)
) as baseprice
from warehouseItems wi
mas agora quero a descrição também, como alterar a consulta para obter mais de 1 coluna? Não posso alterar a consulta para isso, pois a coalescência falharia. Eu estava pensando em selecionar essas consultas na coalescência em tabelas temporárias e fazer algum tipo de junção em vez de coalescer, não tenho certeza se essa é a abordagem correta.
select top 1 price, productDescrip
from productPriceEast
where ppe.id = wi.id
order by ppe.date
Parece que você precisa de um
OUTER APPLY
A
COALESCE()
função aceita mais de dois parâmetros. Por exemplo, o seguinte é uma sintaxe válida:Não tem certeza do que você está realmente preso?... se você pudesse fornecer as definições de sua tabela, alguns dados de amostra e um exemplo de saída esperada, isso poderia tornar seu objetivo mais claro.
Por exemplo, você pode concatenar duas subconsultas na mesma expressão da
COALESCE()
cláusula, se seu objetivo for mostrar o juntoprice
com oproductDescrip
, assim:Supondo que sua
ORDER BY ppe.date
cláusula seja determinística para um determinado arquivoppe.id
.Ou ainda mais simples,
CONCAT()
os dois campos dentro da expressão de subconsulta original assim: