यह कैसे एसक्यूएल (एमएस एसक्यूएल) में प्राप्त किया जा सकताकोई डेटा के साथ एक और तालिका की संरचना से तालिका का निर्माण
धन्यवाद
ठीक: चलो मुझे स्पष्ट क्या हासिल करने के साथ गतिशील चयन बयान पैदा कर रहा है कोशिश कर रहा हूँ थोड़ा निकास खंड
जैसे: चयन col1, col2, चयन col1, col2, @table
से col2 तो मेरे resultset मैं चाहता हूँ @table
आगे नीचे के आधार पर हमेशा अलग हो जाएगा छोड़कर @table से col3
- इस @table ((ऊपर बनाई गई) चयन col1, col2 temptable से) के रूप में filteredData साथCTE
में उपयोग करने के लिए 10 नीचेकोड अब तक है:
DECLARE @TABLENAME VARCHAR(200) = 'SERVICE_DELIVERY_LOCATION';
DECLARE @COLCOUNT INT ;
DECLARE @TEMPCOLNAME VARCHAR(500) ;
DECLARE @SELECTCOLUMNS VARCHAR(5000)='';
DECLARE @EXCEPTSTATEMENT VARCHAR(5000)='' ;
---------------------------------------------------------------------------------------------------
--CASE: GET COMMON_COLUMNS COLUMNS OF SOURCE AND DESTINATION TABLE
---------------------------------------------------------------------------------------------------
DECLARE @COMMON_COLUMNS TABLE(COLUMN_NAME VARCHAR(500))
INSERT INTO @COMMON_COLUMNS
SELECT SOURCE.COLUMN_NAME FROM SCD_SOURCE.INFORMATION_SCHEMA.COLUMNS SOURCE
INNER JOIN SCD_DESTI.INFORMATION_SCHEMA.COLUMNS DESTI ON SOURCE.COLUMN_NAME = DESTI.COLUMN_NAME
---------------------------------------------------------------------------------------------------
--CASE: GET PK COLUMNS OF SOURCE TO MAP TO DESTINATION IN CASE WHERE NEED TO DO UPDATES
---------------------------------------------------------------------------------------------------
DECLARE @PK_COLUMNS TABLE (PK_COLUMN VARCHAR(500))
INSERT INTO @PK_COLUMNS
SELECT KCU.COLUMN_NAME
FROM SCD_SOURCE.INFORMATION_SCHEMA.TABLE_CONSTRAINTS AS TC
JOIN SCD_SOURCE.INFORMATION_SCHEMA.KEY_COLUMN_USAGE AS KCU ON KCU.CONSTRAINT_SCHEMA = TC.CONSTRAINT_SCHEMA
AND KCU.CONSTRAINT_NAME = TC.CONSTRAINT_NAME
AND KCU.TABLE_SCHEMA = TC.TABLE_SCHEMA
AND KCU.TABLE_NAME = TC.TABLE_NAME
AND KCU.COLUMN_NAME != 'CREATE_DATA_CONTAINER_ID'
WHERE TC.CONSTRAINT_TYPE IN ('PRIMARY KEY')
SELECT @COLCOUNT = COUNT(*) FROM @COMMON_COLUMNS
WHILE (@COLCOUNT != 0)
BEGIN
SET @TEMPCOLNAME = (SELECT TOP 1 COLUMN_NAME FROM @COMMON_COLUMNS)
SET @SELECTCOLUMNS = @SELECTCOLUMNS + @TEMPCOLNAME + ', '
DELETE FROM @COMMON_COLUMNS WHERE COLUMN_NAME = @TEMPCOLNAME
SELECT @COLCOUNT = COUNT(*) FROM @COMMON_COLUMNS
END
SET @SELECTCOLUMNS = SUBSTRING(@SELECTCOLUMNS, 1, LEN(@SELECTCOLUMNS) - 1)
SET @EXCEPTSTATEMENT = 'SELECT ' + @SELECTCOLUMNS + ' FROM SCD_SOURCE.DBO.' + @TABLENAME + ' EXCEPT SELECT ' + @SELECTCOLUMNS + ' FROM SCD_DESTI.DBO.' + @TABLENAME
EXEC(@EXCEPTSTATEMENT)
temptable
धन्यवाद
क्या किसी प्रोग्राम को एक ही स्कीमा के साथ नई टेबल बनाना है? यदि यह मानव एंथर्स द्वारा किया जाता है तो सही है। – awright18