[英]Combining these two SQL Queries
我在合並這兩個SQL查詢時遇到麻煩。 我有這個原始查詢,它從兩個表中選擇數據,相關的列是Tasks.CustomerID和Customers.CustomerID。 這基本上是任務。* + Customer.Name
ALTER PROCEDURE [dbo].[SP_SelectTasksandName]
AS
SELECT TASKS.CustomerID, TASKS.DateCreation, TASKS.DateFinish, TASKS.Description, TASKS.Fees, TASKS.Hours, TASKS.InvoiceNum, TASKS.PaymentMethod,
TASKS.Status, TASKS.TaskID, CUSTOMERS.Name
FROM TASKS, CUSTOMERS
WHERE (TASKS.CustomerID LIKE CUSTOMERS.CustomerID)
這可行,但是現在我被要求將查詢限制為指定的行數。 我發現此代碼對我的其他更簡單的查詢非常有效,但似乎無法在此查詢中正確使用它。 該限制代碼如下。 (即所有行> @low &&行<= @high)
SELECT * FROM (
SELECT *, ROW_NUMBER() OVER (ORDER BY CustomerID) as row FROM CUSTOMERS
) a WHERE ((a.row > @low and a.row <= @high)
這是我得到的最接近的東西,但是我被困在這里。
SELECT * FROM (
SELECT *, ROW_NUMBER() OVER (ORDER BY TASKS.CustomerID) as row FROM
(SELECT TASKS.CustomerID, TASKS.DateCreation, TASKS.DateFinish, TASKS.Description, TASKS.Fees, TASKS.Hours, TASKS.InvoiceNum, TASKS.PaymentMethod,
TASKS.Status, TASKS.TaskID, CUSTOMERS.Name
FROM TASKS, CUSTOMERS
WHERE (TASKS.CustomerID LIKE CUSTOMERS.CustomerID))
) a WHERE (a.row > @low and a.row <= @high)
在最后一行的第一個括號中出現錯誤“期望為id或帶引號的id”。
很抱歉出現菜鳥問題,感謝您提供的任何幫助。
請勿在FROM
子句中使用逗號。 始終使用正確的顯式JOIN
語法。
您要查找的查詢可以寫為:
SELECT tc.*
FROM (SELECT t.CustomerID, t.DateCreation, t.DateFinish, t.Description,
t.Fees, t.Hours, t.InvoiceNum, t.PaymentMethod,
t.Status, t.TaskID, c.Name,
ROW_NUMBER() OVER (ORDER BY t.CustomerID) as seqnum
FROM TASKS t JOIN
CUSTOMERS c
ON t.CustomerID = c.CustomerID
) tc
WHERE tc.seqnum > @low ANDtc.seqnum <= @high
我將查詢編寫如下:
;With CTE
As
(
SELECT
TASKS.CustomerID,
TASKS.DateCreation,
TASKS.DateFinish,
TASKS.Description,
TASKS.Fees,
TASKS.Hours,
TASKS.InvoiceNum,
TASKS.PaymentMethod,
TASKS.Status,
TASKS.TaskID,
CUSTOMERS.Name,
Row_Number() over (Partition By Tasks.CustomerID Order by Tasks.CustomerID) as RN
FROM TASKS
Inner Join CUSTOMERS
on (TASKS.CustomerID = CUSTOMERS.CustomerID)
)
select * -- just being lazy here - in production code you ALWAYS use an explicit field list
from CTE
Where CTE.RN > @low and CTE.RN <= @high -- or whatever logic you need
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.