मेरे पास निम्न प्रारूप वाली एक सारणी है:

ID    CODE    NAME    VALUE
p1    p       deflect Yes
a1    d       source  Prim
p1    p       source  Dim

मैं निम्नलिखित के लिए पिवट करना चाहता हूं:

ID    CODE    deflect    source
p1    p       Yes        DIM
a1    d       NULL       Prim

यह मेरा वर्तमान कोड है:

SELECT *
from
(
    select [ID], [CODE], [NAME], [VALUE]
    FROM [DATABASE].[dbo].[TABLE]
) SOURCE_TABLE
pivot
(
    max(VALUE)
    for [NAME] in ('deflect', 'source')
) PIVOT_TABLE;

लेकिन मुझे मिल रहा है:

Incorrect syntax near 'deflect'.

इसके लिए आप पिवट कोड कैसे लिखेंगे?

0
Cornel Verster 29 जिंदा 2021, 14:26

1 उत्तर

सबसे बढ़िया उत्तर

आप निम्नानुसार सशर्त एकत्रीकरण का उपयोग क्यों नहीं करते:

select [ID], [CODE], 
       max(case when [NAME] = 'deflect' then [VALUE] end) as deflect,
       max(case when [NAME] = 'source' then [VALUE] end) as source_
FROM [DATABASE].[dbo].[TABLE]
group by [ID], [CODE] 
2
Popeye 29 जिंदा 2021, 14:40
धन्यवाद, क्या प्रत्येक को निर्दिष्ट करने के बजाय कॉलम के सभी मानों के लिए इसे पिवट करने के लिए कहने का कोई तरीका है?
 – 
Cornel Verster
29 जिंदा 2021, 14:49
आपको उस स्थिति में गतिशील क्वेरी का उपयोग करना होगा। यह इतना आसान नहीं होगा। आपको ऐसे लॉजिक्स को डेटाबेस के बजाय एप्लिकेशन साइड में लागू करना चाहिए
 – 
Popeye
29 जिंदा 2021, 14:53