Функция зацикливания для ввода нескольких SKU - PullRequest
0 голосов
/ 12 июня 2019

Я пытаюсь запросить информацию из списка около 150 наименований товаров в нескольких разных таблицах. До сих пор я пытался сделать операторы Select, Where и From, но не хочу продолжать делать операторы OR 150 раз. Есть ли способ зациклить код и получить информацию следующим образом:

SKU   ProductName  Introduction Date   Suggested Retail Price   Units Sold  
1234    Cream             6/12/2019               $5.47              50

Базы данных следующие

SKU - это номер позиции из таблицы dbo.v_Nav_PurchasePriceCurrent

Наименование продукта - это Описание в таблице [NAV-WH]. [Dbo]. [Threshold Enterprises $ Item]

Дата введения - это дата начала из таблицы dbo.v_NAV_PurchasePriceCurrent

Рекомендованная розничная цена - это рекомендованная розничная цена из таблицы dbo.v_NAV_PurchasePriceCurrent

Проданные единицы и проданная сумма - я получаю, используя следующий код:

DECLARE @SDate date
SET @SDate = '12/31/2018'
DECLARE @EDate date
SET @EDate = '5/30/2019'


SELECT        SUM(Amount) AS EXPR1
FROM            dbo.[Threshold Enterprises$Sales Invoice Line]
WHERE        ([Shipment Date] BETWEEN @SDate AND @EDate) AND (No_ = 
N'SN1580')

SELECT        SUM(Quantity) AS EXPR1
FROM            dbo.[Threshold Enterprises$Sales Invoice Line]
WHERE        ([Shipment Date] BETWEEN @SDate AND @EDate) AND (No_ = 
N'SN1580')

Код Ниже приведены подробные сведения о том, как я получил информацию, но пытаюсь собрать все вместе, а также код, указанный выше для проданной суммы

/****** Script for SelectTopNRows command from SSMS  ******/
SELECT        TOP (1000) [Item No_], [Suggested Retail Price], [Starting 
Date], [Ending Date], [Price Source]
FROM            dbo.v_NAV_PurchasePriceCurrent
WHERE        ([Item No_] = N'SN1793') OR
                     ([Item No_] = N'SN1794') OR
                     ([Item No_] = N'SN1795') OR
                     ([Item No_] = N'SN1201') OR
                     ([Item No_] = N'SN1202') OR
                     ([Item No_] = N'SN2636') OR
                     ([Item No_] = N'SN2637') OR
                     ([Item No_] = N'SN2185') OR
                     ([Item No_] = N'SN2186') OR
                     ([Item No_] = N'SN1213') OR
                     ([Item No_] = N'SN1214') OR
                     ([Item No_] = N'SN1732') OR
                     ([Item No_] = N'SN1945') OR
                     ([Item No_] = N'SN1946')OR
                     ([Item No_] = N'SN1947')OR
                     ([Item No_] = N'SN1766')OR
                     ([Item No_] = N'SN1767')OR
                     ([Item No_] = N'SN1768')OR
                     ([Item No_] = N'SN2138')OR
                     ([Item No_] = N'SN2139')or
                     ([Item No_] = N'SN1201')or
                     ([Item No_] = N'SN1201')

Мои ожидаемые результаты публикуются ниже с дополнительным столбцом, включая проданную сумму

SKU   ProductName  Introduction Date   Suggested Retail Price   Units Sold  
1234    Cream             6/12/2019               $5.47              50
4565    Pill              1/1/2019                $4.55              45

1 Ответ

0 голосов
/ 12 июня 2019

Ваше самое простое решение будет использовать оператор IN, например:

/****** Script for SelectTopNRows command from SSMS  ******/
SELECT        TOP (1000) [Item No_], [Suggested Retail Price], [Starting Date], [Ending Date], [Price Source]
FROM          dbo.v_NAV_PurchasePriceCurrent
WHERE         [Item No_] IN (N'SN1793', N'SN1794', N'SN1795', N'SN1201', N'SN1202', N'SN2636', N'SN2637', 
                             N'SN2185', N'SN2186', N'SN1213', N'SN1214', N'SN1732', N'SN1945', N'SN1946', 
                             N'SN1947', N'SN1766', N'SN1767', N'SN1768', N'SN2138', N'SN2139', N'SN1201', 
                             N'SN1201')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...