我有这个查询
SELECT PaymentDetails_ID AS Pay_ID, Type, Description, Details, Due_Date, PaymentDetails_Cleared, Amount, Mode,
(SELECT Bill_ID
FROM Bill_Payment_Records
WHERE (Payment_ID = Pay_ID)) AS Bill_No
FROM Payment_Details
WHERE (Mode = 1) AND (PaymentDetails_Cleared = 0) AND (Due_Date BETWEEN @Start_Date AND @End_Date)
在这里我想添加一个可以在内部查询中使用的变量。 就像我想要Bill_ID一样,可以在查询中确定。
正如我研究的那样,我觉得它不可能,但我有什么方法可以做到这一点。
答案 0 :(得分:1)
不确定你的问题,但根据我的说法你可以使用变量里面的select语句,比如在查询中添加@billid
SELECT PaymentDetails_ID AS Pay_ID, Type, Description, Details, Due_Date, PaymentDetails_Cleared, Amount, Mode,
(SELECT Bill_ID
FROM Bill_Payment_Records
WHERE (Payment_ID = @billid)) AS Bill_No
FROM Payment_Details
WHERE (Mode = 1) AND (PaymentDetails_Cleared = 0) AND (Due_Date BETWEEN @Start_Date AND @End_Date)
答案 1 :(得分:0)
这是可能的,但不是正确的方法,因为它就像你在查询中放置固定值 除非你使用循环或Cursor来运行Query。
答案 2 :(得分:0)
我猜你在计算[Bill_No]时遇到了麻烦。我可以想到三个可能的问题,第一个我很确定是主要问题:
1. [Pay_ID]实际上是[PaymentDetails_ID]。您不能在分配别名的同一SELECT语句中使用别名
2.您不在相关子查询中指定表名
3.您可能会从相关的子查询中获得超过1条记录。
试试这个?
SELECT
PaymentDetails_ID AS Pay_ID,
Type,
Description,
Details,
Due_Date,
PaymentDetails_Cleared,
Amount,
Mode,
(
SELECT
TOP 1
Bill_ID
FROM
Bill_Payment_Records
WHERE
[Bill_Payment_Records].Payment_ID = [Payment_Details].PaymentDetails_ID)
) AS Bill_No
FROM
Payment_Details
WHERE
(Mode = 1)
AND (PaymentDetails_Cleared = 0)
AND (Due_Date BETWEEN @Start_Date AND @End_Date)
(只有“TOP 1”和表名被添加到相关的子查询中。“Pay_ID”已更改为“PaymentDetails_ID”。)