Sql-Server
如何從 EAV 表的視圖中選擇非空列
我有一個 VIEW 查詢我的 EAV 模型,它使用數據類型表來儲存值。我有一個包含許多屬性的實體,每個屬性可以是不同的數據類型。除了儲存類型之外,DataType 表的結構都相同,它們有 4 列,必需、Min、Max 和 Value(表的相應數據類型)。
我想簡單地得到類似的東西
MyAttributeName、最小值、最大值、值、必需
我有這樣的桌子..
- $$ Attribute:: Attribute_Id, Name $$ $$ Machine:: Machine_Id, Name $$
- $$ Attribute_Val_Int :: Id, Attribute_Id, Machine_Id, Min, Max, Value,Required $$
- $$ Attribute_Val_Dec :: Id, Attribute_Id, Machine_Id, Min,Max, Value, Required $$
- $$ Attribute_Val_Dat :: Id, Attribute_Id, Machine_Id, Min, Max, Value, Required $$
雖然我可以獲得所有的屬性類型值(在這個例子中我得到了 12 列 - 我只想要具有非空值的 Attribute_Val。我希望列名然後別名為 Min、Max、Val、Required
所以而不是收到這個:
MachineName、MyAttributeName、IntMin、IntMax、IntValue、IntRequired、DecMin、DecMax、DecValue、DecRequired、DatMin、DatMax、DatValue、DatRequired。
我想得到:
$$ MachineName, MyAttributeName, Min, Max, Value, Required $$
想一想
SELECT MachineName, MyAttributeName, COALESCE(IntMin, DecMin, DatMin) ValMin, COALESCE(IntMax, DecMax, DatMax) ValMax, COALESCE(IntValue, DecValue, DatValue) ValValue, COALESCE(IntRequired, DecRequired, DatRequired) ValRerquired
但似乎您必須將所有單獨的值轉換為相同的數據類型(字元串?)以避免錯誤。