2010-06-21 66 views
1

我有这个疑问我想知道这个查询方法是否可行?

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

这个布局是不太容易阅读。 .. – MatBailie 2010-06-21 14:35:59

回答

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”。)

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) 
+0

我知道,但收费的变量是这个查询执行期间产生 – Mobin 2010-06-21 12:05:45

+0

发表您的查询比如果可能的话 – 2010-06-21 16:35:52

0

这是可能的,但不正确的方式做,因为它就像你把固定值在查询 中,除非您使用循环或光标来运行查询。

+0

您能否提供我一些阅读或任何链接 可以是任何例如 – Mobin 2010-06-21 12:13:01

+0

声明@bill_ID我可以给解决方案int 将光标声明为选择查询以供您使用 插入您想要在C中使用的变量列表ursor begin 使用您的子查询并在 中设置您的变量从TableName中选择@BillID = BillId其中标准 用户原始查询并将@BillID放入此处。 从Tablename中选择* Billid = @ BillID end 取消分配光标 – KuldipMCA 2010-06-21 12:19:06

+0

我无法执行该操作。你可以说得更详细点吗。 :$ – Mobin 2010-06-21 13:00:31

相关问题