2016-03-29 66 views
0

我MSSQL 2008年後續工作。
我想「更PARAMS」合併到同一選擇與diferent結果
我不能在運行時modifiy查詢。
TABLE1 - 客戶ID_PK,NAME
TABLE2 - 細節ID_PK,IDCLIENT,細節結合到MSSQL SQL參數在一個

形勢一
我需要的信息從所有客戶

SELECT C.IDCLIENT, C.NAME 
from CLIENTI C 
LEFT JOIN DETAILS D ON D.IDCLIENT = C.ID_PK 
WHERE ... <where clause> 

情況B
我需要的信息從一個特定的IDCLIENT

SELECT C.IDCLIENT, C.NAME 
from CLIENTI C 
LEFT JOIN DETAILS D ON D.IDCLIENT = C.ID_PK 
WHERE C.ID_PK = :AID 
AND ...<where clause> 

情況c
我需要從一系列的客戶(我通過這個參數字符串)

SELECT C.IDCLIENT, C.NAME 
from CLIENTI C 
LEFT JOIN DETAILS D ON D.IDCLIENT = C.ID_PK 
WHERE C.ID_PK IN (:AID_STRING) 
AND ...<where clause> 

我怎樣才能讓則params的這個組合的信息?
勒茲萬

回答

0

嘗試這樣的事情

SELECT C.IDCLIENT, C.NAME 
from CLIENTI C 
LEFT JOIN DETAILS D ON D.IDCLIENT = C.ID_PK 
WHERE (C.ID_PK = @AID or @AID is NULL) 
... <where clause> 

當你不想@AID參數只是把它作爲NULL

+0

我的SQL SELECT C. *,FCT。* FROM ÇCLIENTI LEFT OUTER JOIN(SELECT * FROM FCT_GETVANZARI(:ADATABEGIN,:ADATAEND))AS FCT ON FCT.IDCLIENT = C.IDCLIENT WHERE((C.IDCLIENT =:AID)OR(:AISALL = 1)OR(C.IDCLIENT IN (SELECT OUTID FROM FCT_PARSESTRING(:AIDRANGE))) ) ORDER BY C.NUME 其中FCT_GETVANZARI是選擇日期和FCT_PARSESTRING之間細節的功能是從等1,2,3,4,5,6(範圍ID給定的逗號分隔的字符串創建數據集的函數的客戶) –