あなたはPIVOTを探しています:http://msdn.microsoft.com/en-us/library/ms177410.aspx
ここにあなたが与えた情報のベストショットです、私は私のアプリの中で似たようなことをしています。ピボット値が変更された場合は、動的SQLクエリを使用する必要があります。
SELECT *
FROM (SELECT [Date]
,[Product]
FROM [Values]
PIVOT (Max([Date])
FOR [Product]
IN ('put date ranges here')) pvt
これは私の見た目ですが、これはさまざまな値のセットを許可します。これはフォームビルダでユーザー入力の値を取得するために使用されます
--//Get a comma delimited list of field names from the field table for this form
DECLARE @FieldNames varchar(max)
SELECT @FieldNames = COALESCE(@FieldNames + ', ', '') + '[' + CAST([FieldName] AS varchar(max)) + ']'
FROM [Fields]
WHERE [FormID] = @FormID
--//create a dynamic sql pivot table that will bring our
--//fields and values together to look like a real sql table
DECLARE @SQL varchar(max)
SET @SQL =
'SELECT *
FROM (SELECT [Values].[RowID]
,[Fields].[FieldName]
,[Values].[Value]
FROM [Values]
INNER JOIN [Fields] ON [Fields].[FieldID] = [Values].[FieldID]
WHERE [Fields].[FormID] = ''' + @FormID + ''') p
PIVOT (Max([Value])
FOR [FieldName]
IN (' + @FieldNames + ')) pvt'
--//execute our sql to return the data
EXEC(@SQL)
返されるセットにはいくつの列がありますか?また、行3では、2番目の日付の列がありません - それはnull値、空の文字列、または何ですか? –
返されるセットには4つの列が含まれます。 3行目では、日付の値を結合するための一致する行がないため、2番目の日付の列はNULLになります。 – Techspirit