SQL Server 2008 で foreach の状況を回避するために必死に努力しています (私のバックグラウンドは c# です)。
基本的に、SKU のリストがあります。リスト内の各 SKU について、その特定の SKU が Web に表示されるかどうかを判断する計算を実行する必要があります。
SKU のリストを取得するには、次を使用します。
SELECT Feed.StyleCode as SKU
FROM [eCommerce].[dbo].[BABW_ItemFeed] as Feed
WHERE Feed.ProductDefinition = 'Kit'
これを返す:
そして、各SKUフィールドを計算するために、私はこれを使用しています:
DECLARE @SKU AS varchar(50)
SET @SKU= '11993_16559_16227'
SELECT
@SKU as SKU,
0 AS Quantity,
MIN(ISNULL(Sending.IsActive, 'WEBNO')) AS IsActive,
MAX(ISNULL(Sending.IsDiscontinued, 1)) AS IsDiscontinued
FROM
(
SELECT * FROM [eCommerce].[dbo].[Split] (
@SKU
,'_')
) AS SplitSkus
LEFT JOIN #SkusToSend AS Sending
ON Sending.SKU = SplitSkus.items
これを返す:
ここで、@SKU 宣言を削除して、2 つのテーブルを一緒に同期する必要があります。UNION を使用してこれを行うことはできないと思います。2 番目の関数には、処理する SKU の事前知識が必要であり、JOIN には結合する何かが必要になるためです。本当に持っています。ループ メカニズムなしで一度に SKU の完全なテーブルを作成するために使用できる、よく知らない関数はありますか?