मैं अपने एसक्यूएल सर्वरअद्यतन एक तालिका स्तंभ मान
टेबल नहीं में दो तालिकाओं की है। 1
CREATE TABLE #Config
(
varColumnName VARCHAR(200) ,
varAliasName VARCHAR(200)
)
INSERT INTO #Config (varColumnName, varAliasName)
VALUES ('Consumed (Strips)', 'decQuantity'),
('Closing (Strips)', 'decClosing')
तालिका संख्या। 2
CREATE TABLE #Data
(
decQuantity DECIMAL(18, 2) ,
decClosing DECIMAL(18, 2) ,
varInvalidRemarks VARCHAR(MAX)
)
INSERT INTO #Data (decQuantity, decClosing)
VALUES (10.10, 25.00),
(-15.10, 45.00),
(5.10, -10.00),
(-25.10, -10.00)
इन दो तालिकाओं मैं अद्यतन करने के लिए
#Data
तालिका के
varInvalidRemarks
स्तंभ चाहते से
और मैं follwing उत्पादन हैं:
decQuantity | decClosing | varInvalidRemarks
-------------|------------|--------------------------
10.10 | 25.00 |
-15.10 | 45.00 | Consumed (Strips) can NOT be negetive
5.10 | -10.00 | Closing (Strips) can NOT be negetive
-25.10 | -10.00 | Consumed (Strips) can not be negetive,Closing(Strips) can not be negetive
मैं एक FAST FORWARD READ ONLY
कर्सर के साथ इस बात किया है, लेकिन मैं इसके साथ क्या करना चाहते हैं एक उप क्वेरी या गतिशील क्वेरी।
DECLARE @varColumnName VARCHAR(200) ,
@varAliasName VARCHAR(200)
DECLARE DisplayColumn CURSOR FAST_FORWARD READ_ONLY
FOR
SELECT C.varColumnName ,
C.varAliasName
FROM #Config AS C
OPEN DisplayColumn
FETCH NEXT FROM DisplayColumn INTO @varColumnName, @varAliasName
WHILE @@FETCH_STATUS = 0
BEGIN
EXEC ('
UPDATE D
SET D.varInvalidRemarks = isnull(D.varInvalidRemarks,'''') +
'','[email protected] +' can not be negative ''
FROM #Data AS D
WHERE CAST(ISNULL(D.'[email protected]+', 0) AS DECIMAL(18, 2)) < 0
')
FETCH NEXT FROM DisplayColumn INTO @varColumnName, @varAliasName
END
CLOSE DisplayColumn
DEALLOCATE DisplayColumn
मैं अपनी संग्रहीत प्रक्रिया में प्रदर्शन समस्या के कारण ऐसा करना चाहता हूं।
क्या यह सब उप क्वेरी के साथ प्राप्त करना संभव है?
धन्यवाद
हमें अपनी कर्सर क्वेरी दिखाएं के लिए प्रिंट देखें। – pedram
इसे केवल 'केस' अभिव्यक्ति के साथ क्यों न करें? –
'चयन \t decQuantity, \t decClosing, \t varInvalidremarks = STUFF (( \t \t चयन \t \t \t मामला है जब decQuantity <0 तो अन्य सभी '', खपत (स्ट्रिप्स) नकारात्मक नहीं हो सकता '' अंत + \t \t \t मामला है जब ', बंद (स्ट्रिप्स) नकारात्मक नहीं हो सकता' <0 तब decClosing अन्य सभी '' अंत \t \t), 1, 1, '') #Data से ' –