我在這裏有一些代碼,但首先我想解釋我的問題。如何在裏面創建帶有變量的視圖?
我想創建一個視圖,但因爲我的SELECT
聲明HASE一些variables
在裏面我看到了一些答案與function
視圖中的那不可能的,但我不知道參數是如何工作的。
這裏是我的代碼
CODE:
DECLARE @totalRecords INT
DECLARE @I INT
SELECT @I = 1
SELECT @totalRecords = COUNT([Id]) FROM [dbo].[Werkzaamheden]
WHILE (@I <= @totalRecords)
BEGIN
SELECT
U.[Id]
, G.[Naam]
, W.[Omschrijving]
, U.[datum]
, CONVERT(VARCHAR,100)+'%' AS 'Status'
, W.[Norm]
, W.Id
FROM [Werkzaamheden] W
RIGHT JOIN [Uitgevoerd] U ON U.[Taak] = W.[Id] /*or left */
FULL JOIN [Gebruikers] G ON G.[Naam] = U.[Naam]
WHERE U.[Status]= 1 AND W.Id = @I
UNION
SELECT
U.[Id]
, G.[Naam]
, W.[Omschrijving]
, U.[datum]
, CONVERT(VARCHAR,0)+'%' AS 'Status'
, W.[Norm]
, W.Id
FROM [Werkzaamheden] W
LEFT JOIN [Uitgevoerd] U ON U.[Taak] = W.[Id] /*or left */
FULL JOIN [Gebruikers] G ON G.[Naam] = U.[Naam]
WHERE U.[Status]= 0 AND W.Id = @I
UNION
SELECT
U.[Id]
, G.[Naam]
, W.[Omschrijving]
, U.[datum]
, null AS 'Status'
, '' AS Norm
, W.Id
FROM [Werkzaamheden] W
RIGHT JOIN [Uitgevoerd] U ON U.[Taak] = W.[Id] /*or left */
FULL JOIN [Gebruikers] G ON G.[Naam] = U.[Naam]
WHERE U.[Status]IS NULL
SELECT @I = @I + 1
END
什麼是最好的salution?
這是它返回:
Id Naam Omschrijving datum Status Norm Id
NULL Johan NULL NULL NULL 0 NULL
8 Piet Luisteren 2013-05-14 0% 95 3
9 Klaas Luisteren 2013-05-16 100% 95 3
13 Klaas Luisteren 2013-05-17 0% 95 3
14 Janneke Luisteren 2013-05-17 100% 95 3
Id Naam Omschrijving datum Status Norm Id
NULL Johan NULL NULL NULL 0 NULL
4 Janneke Schoonmaken 2013-05-14 100% 20 2
5 Jan Schoonmaken 2013-05-14 0% 20 2
10 Piet Schoonmaken 2013-05-16 100% 20 2
11 Janneke Schoonmaken 2013-05-16 100% 20 2
12 Piet Schoonmaken 2013-05-17 100% 20 2
,這是很好的
你想做什麼?逐行循環遍歷Werkzaamheden,並將每行的UNION作爲單獨的結果集返回?爲什麼?這應該是一個單一的選擇 – gbn
這是一個posibilitie,但除此之外,我必須使IF ELSE structer,但這是更快的超時他們告訴我 – Jeroen
我懷疑它是更快,我不明白你爲什麼使用IF ELSE – gbn