Sql 我想知道这种查询方法是否可行?
我有这个疑问Sql 我想知道这种查询方法是否可行?,sql,Sql,我有这个疑问 SELECT PaymentDetails_ID AS Pay_ID, Type, Description, Details, Due_Date, PaymentDetails_Cleared, Amount, Mode, (SELECT Bill_ID FROM Bill_Payment_Records
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)
在这里,我想添加一个可以在内部查询中使用的变量。
就像我想要账单一样,可以在查询中确定
正如我所研究的,我认为这是不可能的,但我有什么办法可以做到这一点。不确定您的问题,但根据我的说法,您可以在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)
不确定您的问题,但根据我的说法,您可以在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)
这是可能的,但不是正确的方法,因为这就像在查询中输入固定值一样
除非您使用循环或游标来运行查询。这是可能的,但不是正确的方法,因为这就像您在查询中放入固定值一样
除非您使用循环或游标运行查询。我猜您在计算[Bill\u No]时遇到了问题。我可以想到三个可能的问题,第一个我很确定是主要问题:
1.[Pay_ID]实际上是[PaymentDetails_ID]。不能在分配别名的同一SELECT语句中使用别名。
2.您没有在相关子查询中指定表名。
3.您可以从相关子查询返回多条记录 试试这个
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)
(只有“前1名”和表名被添加到相关子查询中。“Pay_ID”被更改为“PaymentDetails_ID”)我猜您在计算[Bill_No]时遇到了问题。我可以想到三个可能的问题,第一个我很确定是主要问题:
1.[Pay_ID]实际上是[PaymentDetails_ID]。不能在分配别名的同一SELECT语句中使用别名。
2.您没有在相关子查询中指定表名。
3.您可以从相关子查询返回多条记录 试试这个
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)
(仅将“前1名”和表名添加到相关子查询。“Pay_ID”更改为“PaymentDetails_ID”。)我知道,但该账单变量将在本次查询执行期间生成发布您的查询,如果可能,我可以给出解决方案我知道,但该账单变量将在本次查询执行期间生成发布您的查询,如果可能,我可以给出解决方案您可以建议我阅读一些内容,或者任何链接可能是任何示例Declare吗@bill_ID as int将游标声明为select Query供您在游标中使用的变量列表开始使用子查询,并在select@BillID=BillID from TableName中设置变量,其中条件用户使用原始查询并将@BillID放入其中。从Tablename中选择*,其中Billid=@Billid end Deallocate Cursori无法执行该操作。你能说得更具体些吗$你能给我一些阅读的建议吗?或者任何链接都可以是任何示例Declare@bill\u ID as int Declare Cursor as select Query for your use in Variables list in Cursor开始使用你的子查询并在select@BillID=BillID from TableName中设置你的变量,其中的条件是使用你的原始查询并将@BillID放入其中。从Tablename中选择*,其中Billid=@Billid end Deallocate Cursori无法执行该操作。你能说得更具体些吗$那个版面不太容易阅读…那个版面不太容易阅读。。。