CREATE TABLE constants (
id AS INT,
Illustrated AS VARCHAR(3),
FrontPage AS VARCHAR(3),
BackPage AS VARCHAR(3),
EDLP AS VARCHAR(3),
SpecialPromo AS VARCHAR(3)
)
INSERT INTO constants SELECT 1, 'I', 'FP', 'BP', 'ELP', 'PR'
SELECT
Name,
CASE WHEN CHARINDEX(constants.Illustrated, data.S_Data) > 0 THEN 1 ELSE 0 END AS Illustrated,
etc, etc
FROM
data
INNER JOIN
constants
ON constants.id = 1
Ben en az iki seçenekten düşünebiliriz
... Ya da ...
CREATE TABLE constants (
constant_set_id AS INT,
constant_name AS VARCHAR(16),
value AS AS VARCHAR(3)
)
INSERT INTO constants SELECT 1, 'Illustrated', 'I'
INSERT INTO constants SELECT 1, 'FrontPage', 'FP'
INSERT INTO constants SELECT 1, 'BackPage', 'BP'
INSERT INTO constants SELECT 1, 'EDLP', 'ELP'
INSERT INTO constants SELECT 1, 'SpecialPromo', 'PR'
SELECT
Name,
MAX(CASE WHEN constants.constant_name = 'Illustrated' AND CHARINDEX(constants.value, data.S_Data) > 0 THEN 1 ELSE 0 END) AS Illustrated,
etc, etc
FROM
data
INNER JOIN
constants
ON constants.constant_set_id = 1
GROUP BY
data.name
ikisi de sabitleri birden fazla farklı setleri atalım. Biri, şemayı değiştirmeden genişletilebilir, ancak sorgunun değişmesi gerekmesine rağmen.
Her iki yaklaşımın en önemli avantajı, sabitleri başka yerlerde yeniden kullanabilmeniz, ancak bunları bir kez merkezi bir konumda depolayabilmenizdir. Hangi sadece sabitlerin değerleri güncellenmesi gerektiğinde/ile ilgili. Dolaylı olarak yeniden kullanın.
değil kazanmak istiyorum ne kadar emin, ben hala '(Illustrated' kodlanmış sütun adlarını istediğimiz farz ediyorum beri, Sonuç kümenizdeki bu değerlerle ilişkilendirilmiş 'FrontPage' vb. –
Bu seçim için görünüm oluşturmaya ne dersin? –
Düşündüğüm şey, yani "buna değer mi?" – Perplexed