I'm trying to write a query that takes in a set of salesOrderId + lineNumber combo and returns that set in a single query. I can easily select one row at a time using the WHERE ... IN ...
syntax (see below) but since I have a compound key, I'm not sure how to do it.
Using SQL Server, what are some ways to select multiple rows?
This query will back a function similar to this:
getSalesOrderLines([
{ SalesOrder: "C1001115", SalesOrderLine: 1 },
{ SalesOrder: "C1001115", SalesOrderLine: 3 },
{ SalesOrder: "C1001222", SalesOrderLine: 1 }
])
And should return something like:
[
{ SalesOrder: 'C1001115', SalesOrderLine: 1, ... },
{ SalesOrder: 'C1001115', SalesOrderLine: 3, ... }
{ SalesOrder: 'C1001222', SalesOrderLine: 1, ... }
]
Working: select a single row:
SELECT *
FROM [SalesOrderDetailDetail]
WHERE [SalesOrderDetailDetail].[SalesOrder] = 'C1001115'
AND [SalesOrderDetailDetail].[SalesOrderLine] = 1
Not working: tuple comparison / row constructor
SELECT *
FROM [SalesOrderDetail]
WHERE ([SalesOrderDetail].[SalesOrder],
[SalesOrderDetail].[SalesOrderLine])
IN (('C1001115', 1))
This throws an error:
An expression of non-boolean type specified in a context where a condition is expected.
Not working: derived key:
SELECT
[SalesOrderDetail].[SalesOrder] + '-' + CAST([SalesOrderDetail]. [SalesOrderLine] AS VARCHAR) AS [comboKey],
*
FROM [SalesOrderDetail]
WHERE comboKey IN (('C1001115-1'))
But I learned that you can't use a column alias directly in the WHERE
clause